Как создать карту Flux с Mono? - PullRequest
       7

Как создать карту Flux с Mono?

0 голосов
/ 24 сентября 2018

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

Кто-нибудь имеет представление о том, что идет не так?

...