【问题标题】:Mocking in Grails Spock integration testing在 Grails Spock 集成测试中模拟
【发布时间】:2016-05-13 12:56:08
【问题描述】:

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

【问题讨论】:

  • 如果没有任何代码,我们如何建议问题出在哪里。

标签: grails spock integration-testing


【解决方案1】:

在您的配置中包含指向外部 API 的 URL,以便您可以模拟它,假设它的配置密钥称为 myConfigValue。安装 WireMock 并包含一个测试服务器作为 JUnit 规则:

@Rule
WireMockRule mockServer = new WireMockRule(WireMockConfiguration.wireMockConfig().port(9900))

the Grails manual 中所述,将模拟服务器的 URL 输入到您的测试中:

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 的替代品,但没有一个对我们如此有效。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-07
  • 2023-03-08
  • 1970-01-01
相关资源
最近更新 更多