2017-07-08 37 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