有多个主机和dnsmasq的WireMock?
问题描述:
我正在为一个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进行测试,而不是未加密的。
答
您应该可以通过在请求中创建具有主机头条件的存根来实现此目的。这样,例如到
GET请求/你好 主持人:firsthost.example.com
并以 GET请求/你好 主持人:secondhost.example.com
将匹配不同的存根,并有不同的回报响应。
感谢您的快速回复@Tom - 我在链接问题中阅读了有关匹配存根的问题,但我想在记录模式下使用WireMock来首先代理通信来创建存根。一旦我拥有了它们,这个解决方案将适用于播放模式。我误解了吗? – suite22
我可能一直在这个答案中胡言乱语。我想如果你开始使用'--match-headers =“Host”'录制,那可能会有诀窍。 – Tom
我想我看到这将如何工作在播放模式或普通的HTTP,但对于HTTPS我看不到我可以如何指定多个证书。传入多个密钥库失败:'找到https-keystore选项的多个参数,但只请求一个''。 – suite22