带有查询参数的 Spring webflux WebTestClient

Mel*_*ius 4 java testing spring-webflux

在我的 webflux 应用程序中,我有这个GET端点

v3/callback?state=cGF5bWVudGlkPTRiMmZlMG
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用编写集成测试 WebTestClient

@Test
public void happyScenario() {
    webTestClient.get().uri("/v3/callback?state=cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();
}
Run Code Online (Sandbox Code Playgroud)

这个测试用例返回404 notFound,如果我删除了查询参数,它将被调用,但state参数将丢失

我试着用 attribute

  webTestClient.get().uri("/v3/callback")
            .attribute("state","cGF5bWVudGlkPTRiMmZlMG")
            .exchange()
            .expectStatus()
            .isOk();
Run Code Online (Sandbox Code Playgroud)

但仍然state缺少参数,使用时如何在请求中包含查询参数webTestClient

Akh*_*dla 10

您可以利用UriBuilder.

webTestClient.get()
            .uri(uriBuilder ->
                    uriBuilder
                            .path("/v3/callback")
                            .queryParam("state", "cGF5bWVudGlkPTRiMmZlMG")
                            .build())
            .exchange()
            .expectStatus()
            .isOk();
Run Code Online (Sandbox Code Playgroud)

这应该有效。