SpringBootTest 中 WireMock stubbing 的区别(静态 vs. JUnit5 扩展)

问题描述 投票:0回答:0

我在理解 Spring Boot 中的 WireMock 集成时遇到了一些麻烦。似乎可以通过使用静态

WireMock.stubFor()
或WireMockExtension的
wireMockExtension.stubFor()
来设置存根。

在以下

@SpringBootTest
中只有
wireMockExtension.stubFor()
似乎有效。
WireMock.stubFor()
给出 404 和一条消息,指出没有已注册的存根。

这两种变体之间有什么区别,在哪些情况下会使用其中一种?

这是一个样本测试...

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@WireMockTest
class WiremockSpringbootApplicationTests {

    @Value("${remote.url}")
    private String remoteUrl;

    @RegisterExtension
    static WireMockExtension wireMockExtension = WireMockExtension.newInstance()
            .options(wireMockConfig().dynamicPort())
            .build();

    // set remote.url dynamically based on WireMock instance
    @DynamicPropertySource
    static void dynamicProperties(DynamicPropertyRegistry registry) {
        registry.add("remote.url", wireMockExtension::baseUrl);
    }

    @Test
    void should_return_test() {
        final WebClient webClient = WebClient.builder().baseUrl(remoteUrl).build();

        // this stubbing works...
        wireMockExtension.stubFor(get("/test")
                .willReturn(aResponse().withBody("test")));

        // ... this doesn't and gives a 404
        // WireMock.stubFor(get("/test")
        //         .willReturn(aResponse().withBody("test")));

        final String responseString = webClient.get().uri("/test")
                .retrieve()
                .bodyToMono(String.class)
                .block();

        Assertions.assertThat(responseString).isEqualTo("test");
    }
}
spring-boot spring-boot-test wiremock
© www.soinside.com 2019 - 2024. All rights reserved.