1

我正在尝试在我的代码中设置单元测试,我想在其中模拟其余调用到外部 Web 服务。我知道有几种方法可以做到这一点:

  1. 使用 PowerMock 将调用外部 Web 服务的方法存根以返回模拟响应对象。

  2. 对于单元测试,将 Web 服务的主机地址更改为指向 localhost,然后使用 WireMock 附加到 localhost 并发送响应。

我想要做的不是更改(2)中的主机地址,而是让 WireMock(或任何其他第三方库)拦截对给定主机的调用,并根据调用发出响应。

换句话说,我想以这样一种方式配置 WireMock,如果我的代码正在调用例如http://www.google.com,那么 WireMock 将拦截该调用并以我配置的内容进行响应。(基本上是存根 www.google.com)。

4

1 回答 1

1

不幸的是,WireMock 不能做到这一点。

你有三个选择(我能想到的):

  1. 使用BetaMax,它将自己配置为 Java HTTP 客户端的代理,或者
  2. 修改您的主机文件以将例如 www.google.com 指向 127.0.0.1
  3. 如果您使用的是 Apache HTTP 客户端 4.2+,则可以实现自定义DnsResolver将您使用的主机名绑定到 127.0.0.1。
于 2014-08-05T17:29:35.327 回答