#spring-webflux #project-reactor #reactor
#spring-webflux #проект-реактор #реактор
Вопрос:
У меня есть этот интерфейс:
interface PageRepository {
fun findAll(): Flux<Flux<Page>>
}
И я хочу протестировать его реализацию, но я получаю:
java.lang.AssertionError: expectation "expectNext(FluxIterable)" failed (expected value: FluxIterable; actual value: UnicastProcessor)
В тесте, который я использую expectNext()
:
repository
.findAll()
.test()
.expectSubscription()
.expectNext(listOf(page(PATH_1), page(PATH_2)).toFlux())
.expectNext(listOf(page(PATH_3), page(PATH_4)).toFlux())
.expectNext(listOf(page(PATH_5)).toFlux())
.verifyComplete()
Чего мне не хватает
Ответ №1:
Ожидаемое следующее использование равно вот почему это сбой, даже если оба потока содержат одни и те же данные, они не совпадают.
Что вы могли бы сделать, так это следующее:
repository().findAll()
.test()
.expectSubscription()
.assertNext {
it.test()
.expectNext(page(PATH_1), page(PATH_2))
.verifyComplete()
}.assertNext {
it.test()
.expectNext(page(PATH_3), page(PATH_4))
.verifyComplete()
}.assertNext {
it.test()
.expectNext(page(PATH_5))
.verifyComplete()
}.verifyComplete()
Я не знаю, есть ли лучший вариант, но это должно сработать.