如何测试来自返回Mono<ResponseEntity<Flux>>的反应式端点的Reactor WebClient主体响应<MyDto>?



我在我的Spring Boot项目中使用了来自org.openapi-tools的开放式openapi生成器maven插件,并启用了反应式配置。我的一个端点返回List正文响应,该响应自动生成为Mono<响应实体<通量>gt

<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi-generator.version}</version>
<configuration>
...
<configOptions>
<interfaceOnly>true</interfaceOnly>
<reactive>true</reactive>
...
</configOptions>
</configuration>    
</plugin>

如何使用WebTestClient在集成测试中测试端点控制器的主体?

如果我尝试这样做,它不会起作用,因为我收到的是通量,而不是预期的dto对象。

webTestApi.get()
.uri("my_uri")
.accept(MediaType.APPLICATION_JSON)
.exchange()
.expectStatus().isOk()
.expectHeader().contentType(MediaType.APPLICATION_JSON)
.expectBody(MyDto.class)
.isEqualTo(myDto);

我终于自己解决了这个问题。

StepVerifier.create(rateApi.get()
.uri("...")
.accept(MediaType.APPLICATION_JSON)
.exchange()
.expectStatus().isOk()
.returnResult(MyDto.class).getResponseBody())
.expectNext(myDto)
.verifyComplete();

我将ResponseBody嵌套到StepVerifier中,就像我们通常测试标准Producer(Flux(一样

最新更新