Я создаю сервис, который вызывает два ресурса REST.Первый вызов извлекает список элементов, а второй - сведения о каждом элементе в списке.
Flux<Result> search(query) {
return client.post().uri("/search")
.body(BodyInserters.fromObject(query))
.retrieve()
.bodyToMono(SearchResults.class)
.flatMapIterable(r -> r.getResults())
.flatMap(this::detail);
}
Mono<Detail> detail(result) {
return client.get().uri("/detail/{id}", result.id)
.retrieve()
.doOnNext(System.out::println))
.bodyToMono(Detail.class);
}
Я вижу, что запрос GET /detail/{id}
отправлен, но doOnNext
в *Блок 1006 * никогда не вызывается из моего теста:
StepVerifier.create(target.search(query))
.assertNext(d -> {
assertThat(d.getField()).isEqualTo("detailed");
})
.verifyComplete();
И этот тест не пройден с:
java.lang.AssertionError: ожидание "assertNext" не выполнено (ожидается: onNext (); actual: onComplete ())
Я немного застрял на этом этапе, документация Reactor использует flatMap
для такого рода случаев, и похоже, что подзапрос (для деталей)послал.Глядя на Вирмока, я вижу, что он может ответить, но у меня больше ничего нет.
Кто-нибудь имеет представление о том, что идет не так?