2016-09-27 15 views
0

WireMockRuleを使用してリモートホストのリクエストを模擬しようとしています。現在、私は以下のようなローカルホストのリクエストを嘲笑しています:WireMockRuleは、統合テストで非ローカルホストでは動作しません

@Rule 
    public WireMockRule wireMockRule = new WireMockRule(80); 

    ... 

    wireMockRule.stubFor(post(urlPathEqualTo("/api/users")) 
    .willReturn(aResponse() 
    .withStatus(200))); 

これらはローカルホストで正しく動作します。しかし、私が類推しようとすると

@Rule 
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().bindAddress("remote").port(80)); 

それはうまくいく、イベントテストdoesntスタート。だから私は皆さんに尋ねたいと思います。誰かが私が間違っていることを知っているかもしれません。ありがとう

答えて

0

WireMockRuleは常にlocalhostでサーバを起動します。リモートのWireMockサーバーに接続するためのものではありません。これはソースから見ることができます。

WireMockクライアントをリモートサーバに対して実行するように設定するには、@Ruleを使用しないでください。あなたのテストの初期化でコンストラクタにWireMock.configureFor("my.remote.host", 8000);を入れるだけです。

import static com.github.tomakehurst.wiremock.client.WireMock.*; 

... 

stubFor(post(urlPathEqualTo("/api/users")) 
    .willReturn(aResponse() 
     .withStatus(200))); 
+0

しかし、私は必要があります。一般的に

、あなたが@Ruleかを使用しているかどうかは、WireMockの設計者は、あなたではなくWireMockRuleオブジェクトのメンバメソッドよりも、WireMockクラスの静的メソッドを使用する予定既存のホストではないリクエストを模擬する(私が実行しているときに、統合テストのホストはオフラインです)。それは可能ですか? –

+0

リモートホスト上でWireMockサーバーを起動する場合は、自分で行う必要があります。あなたのためにリモートホストにサーバーを起動するWireMockは何も提供していません。 – slim

関連する問題