单元测试 - Wiremock 验证因连接错误而失败
Unit Testing - Wiremock verify failing with connection error
我正在测试 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: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
请告诉我哪里做错了。提前致谢。
您需要在您的特定服务器上使用 wireMockServer.verify()
而不是 WireMock.verify()
之类的东西执行验证调用。
我正在测试 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: Connect to localhost:8080 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)
请告诉我哪里做错了。提前致谢。
您需要在您的特定服务器上使用 wireMockServer.verify()
而不是 WireMock.verify()
之类的东西执行验证调用。