模拟Grails Spock集成测试

时间:2016-05-13 12:56:08

标签: grails spock integration-testing

我有grails rest api应用程序,它通过服务在内部调用外部rest apis。我想在做集成测试用例时模拟外部api调用服务。在集成测试用例中,我向应用程序rest api发布请求。由于我无法模拟外部API,因此如果无法访问外部API,则会失败。 那么如何在集成测试用例中模拟调用外部API的服务。

1 个答案:

答案 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的替代品,但没有一个对我们来说效果很好。