我正在测试一个Spring Boot应用程序,并使用Wiremock存根模拟外部API。在一个测试案例中,我想确保我的存根仅被调用一次,但是由于连接错误而失败。
我的测试文件:
@SpringBootTest @AutoConfigureWebTestClient @ActiveProfiles("test") class ControllerTest { @Autowired private lateinit var webClient: WebTestClient private lateinit var wireMockServer: WireMockServer @BeforeEach fun setup() { wireMockServer = WireMockServer(8081) wireMockServer.start() setupStub() } @AfterEach fun teardown() { wireMockServer.stop() } // Stub for external API private fun setupStub() { wireMockServer.stubFor( WireMock.delete(WireMock.urlEqualTo("/externalApiUrl")) .willReturn( WireMock.aResponse() .withHeader("Content-Type", "application/json") .withStatus(204) .withBodyFile("file.json") ) ) } @Test fun test_1() { val email = "some-email" val Id = 123 webClient.post() .uri { builder -> builder.path("/applicationUrl") .queryParam("email", email) .queryParam("id", Id) .build() } .exchange() .expectStatus().isOk WireMock.verify(exactly(1), WireMock.deleteRequestedFor(WireMock.urlEqualTo("/externalApiUrl"))) }
当我运行此测试时,出现以下错误:
org.apache.http.conn.HttpHostConnectException:连接到localhost:8080 [localhost / 127.0.0.1,localhost / 0:0:0:0:0:0:0:0:1]失败:连接被拒绝(连接被拒绝)
请让我知道我在哪里做错了。提前致谢。
您需要使用wireMockServer.verify()而不是来在特定服务器上执行验证调用WireMock.verify()。
wireMockServer.verify()
WireMock.verify()