我想使用WireMock集成为Android应用程序编写测试。我尝试使用所有3种不同的Wiremck集成方法-1.使用JUnit规则编写测试2.非JUnit和一般Java用法3.针对独立服务器的WireMock API
我可以在独立服务器上使用WireMock API运行我的测试。但由于我无法使用这种方法在不同的端口上动态运行,因此我转向了另外2种方法。
下面是示例静态编程语言代码(带有预定义的端口)
对于JUnit规则实现
@Rule
@JvmField
var wireMockRule: WireMockRule = WireMockRule(8888)
@Test
fun exampleTest() {
stubFor(WireMock.get(WireMock.urlPathEqualTo( "/requestURL"))
.willReturn(WireMock.aResponse().withHeader("Content-Type", "application/json")
.withStatus(200).withBody(responseString)))
// App launch and test assertions
}
对于非JUnit和一般Java使用
@Before
fun setUp() {
wireMockServer = WireMockServer(wireMockConfig().port(8888))
wireMockServer.start()
// Tried it by both commenting and uncommenting the following line
// configureFor("localhost", wireMockServer.port())
}
@Test
fun exampleTest() {
val wireMockClient = WireMock("localhost", wireMockServer.port())
wireMockClient.register(stubFor(WireMock.get(WireMock.urlPathMatching( "/requestURL"))
.willReturn(WireMock.aResponse().withHeader("Content-Type", "application/json")
.withStatus(200).withBody(responseString))))
// App launch and test assertions
}
对于这两种方法,我都没有得到我存根的响应。我得到了一个空的响应。将“与状态”字段更改为400以查看响应字符串是否有问题,但我也没有得到错误,这就是我确信它根本没有存根的时候!
分享的示例代码中是否缺少任何内容?
注意:使用的JUnit版本是Junit4,用静态编程语言编写测试。
找出了上述实现不起作用的原因。默认情况下,我的请求调用将转到主机和端口10.0.2.2和8080(基于现有代码),我正在存根本地主机和8888上的wioreck调用。一旦请求调用的主机和端口更新,它就开始按预期工作。