我有grails rest api应用程序,它通过服务在内部调用外部rest apis。我想在做集成测试用例时模拟外部api调用服务。在集成测试用例中,我向应用程序rest api发布请求。由于我无法模拟外部API,因此如果无法访问外部API,则会失败。 那么如何在集成测试用例中模拟调用外部API的服务。
答案 0 :(得分:0)
在配置中包含外部API的URL,以便您可以模拟它,假设其配置键名为myConfigValue
。安装WireMock并将测试服务器包含为JUnit规则:
@Rule
WireMockRule mockServer = new WireMockRule(WireMockConfiguration.wireMockConfig().port(9900))
将模拟服务器的URL提供给您的测试,如the Grails manual中所述:
static doWithConfig(c) {
c.myConfigValue = "http://localhost:9900/"
}
然后使用WireMock的API验证外部呼叫并存储响应,例如
stubFor(get(urlEqualTo("/binary-body"))
.willReturn(aResponse()
.withBody(new byte[] { 1, 2, 3, 4 })));
检查他们的文件是否可行。还有WireMock的替代品,但没有一个对我们来说效果很好。