2017-07-08 33 views
0

我正在为一个iOS应用程序模拟端点,这个应用程序碰撞了十几个不同的HTTPS主机。根据我对WireMock文档的理解以及来自维护人员的this answer,WireMock设计为仅代理/模拟一台主机。我目前的计划是使用dnsmasq来一次指向WireMock中的一台主机。有多个主机和dnsmasq的WireMock?

         +----------+   +-------------------+ 
             |   |   |     | 
             | WireMock +-->Proxy+---> 123.example.com | 
             |   |   |     | 
             +----^-----+   +-------------------+ 
              | 
              |     +-------------------+ 
+-------+         +----+----+   |     | 
|  +---> https://123.example.com +--->   | +-----> xyz.example.com | 
|  |         |   | |  |     | 
| App +---> https://xyz.example.com +---> dnsmasq +---+  +-------------------+ 
|  |         |   | 
|  +---> https://9.different.com +--->   +---+  +-------------------+ 
+-------+         +---------+ |  |     | 
                 +-----> 9.different.com | 
                   |     | 
                   +-------------------+ 

这似乎很笨重,有没有更好的方法来模拟多个这样的主机?其中一个主要限制是它们必须通过HTTPS进行测试,而不是未加密的。

回答

1

您应该可以通过在请求中创建具有主机头条件的存根来实现此目的。这样,例如到

GET请求/你好 主持人:firsthost.example.com

并以 GET请求/你好 主持人:secondhost.example.com

将匹配不同的存根,并有不同的回报响应。

+0

感谢您的快速回复@Tom - 我在链接问题中阅读了有关匹配存根的问题,但我想在记录模式下使用WireMock来首先代理通信来创建存根。一旦我拥有了它们,这个解决方案将适用于播放模式。我误解了吗? – suite22

+1

我可能一直在这个答案中胡言乱语。我想如果你开始使用'--match-headers =“Host”'录制,那可能会有诀窍。 – Tom

+0

我想我看到这将如何工作在播放模式或普通的HTTP,但对于HTTPS我看不到我可以如何指定多个证书。传入多个密钥库失败:'找到https-keystore选项的多个参数,但只请求一个''。 – suite22