mongodb - 反应式存储库不保存对象
问题描述
我想我不太了解 Reactive 存储库和使用它的处理程序是如何工作的。我编写了一个特殊的测试类,只是为了使用存储库测试最简单的处理程序
@SpringBootTest
class TestRepository() {
@Autowired
lateinit var myRepo: myRepo
@Autowired
lateinit var myHandler: MyHandler
@Test
fun `save with a handler`() {
val myObject = MyObject()
myHandler.save(request).subscribe()
StepVerifier.create (myRepository.count() ) <--this does not work
.expectNext (1L )
.expectComplete().verify()
}
@Test
fun `test only database saving`() {
val object = MyObject()
myRepo.save(myRepo).subscribe()
StepVerifier.create (myRepo.count() ) <-- this works
.expectNext (1L )
.expectComplete().verify()
}
}
我的处理程序和存储库以下列方式定义:
@Service
class MyHandler(private val myRepository: MyRepository) {
fun save(object: MyObject): Mono<MyObject> {
return myRepository.save(request)
}
}
@Repository
interface MyRepo : ReactiveMongoRepository<MyObject, String> {
fun save(request: MyObject): Mono<MyObject>
}
我也尝试过使用subscribe
方法,但仍然看不到结果。
我应该纠正什么?
解决方案
使用Mono.then
函数链接save
和count
函数并获得结果 Mono:
@Test
fun `save with a handler`() {
val countAfterSave = myHandler.save(MyObject()).then(myRepository.count());
StepVerifier.create(countAfterSave)
.expectNext(1L)
.expectComplete()
.verify()
}
推荐阅读
- java - java.lang.NoClassDefFoundError: org/wildfly/swarm/bootstrap/util/MavenArtifactDescriptor
- javascript - 加载三个js后切换到相机
- eclipse - Eclipse:突出显示的文本行在各个地方难以辨认
- facebook - 一页上有两个不同的 Facebook 共享链接
- r - 如何在 plotweb 中放置不同的颜色(二分包 R)
- rxjs5 - 在 rxjs 运算符中使用非参数变量
- ios - 在自定义 UIcollectionview 单元格的标签中显示计时器
- python - 颜色条的高度(matplotlib)
- python - 初始状态 lstm 编码器 解码器 keras
- visual-studio-code - 检查当前是否在 VS Extensions 中按下了控制/命令键