反应式存储库不保存对象
Posted
技术标签:
【中文标题】反应式存储库不保存对象【英文标题】:Reactive repository does not save an object 【发布时间】:2019-09-25 23:59:29 【问题描述】:我想我不太了解反应式存储库和使用它的处理程序是如何工作的。我编写了一个特殊的测试类,只是为了使用存储库测试最简单的处理程序
@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
方法,但仍然看不到结果。
我应该纠正什么?
【问题讨论】:
【参考方案1】:使用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()
【讨论】:
以上是关于反应式存储库不保存对象的主要内容,如果未能解决你的问题,请参考以下文章