Реактивный репозиторий не сохраняет объект - PullRequest
1 голос
/ 08 мая 2019

Мне кажется, я не очень хорошо понимаю, как работают репозиторий 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, но он все равно не видит результатов.

Что я должен исправить?

1 Ответ

1 голос
/ 14 мая 2019

Используйте функцию Mono.then для объединения функций save и count и получения результирующего моно:

@Test
fun `save with a handler`() {
  val countAfterSave = myHandler.save(MyObject()).then(myRepository.count());

  StepVerifier.create(countAfterSave)
    .expectNext(1L)
    .expectComplete()
    .verify()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...