2016-11-22 12 views
2

私は外部のサードパーティ製のAPIに接続するアプリケーションを持っていますが、後でAPIのテストインスタンスは特に信頼できるものではありません。これにより開発の進行が止まり、ビルドパイプラインが赤色に変わります。そのため、HTTP記録プロキシを追加してこの問題を回避したいと考えています。WireMockの再生と録音は同時に使用できますか?

私はWireMockをお勧めしましたが、そのrecord and play featuresを試してみましたが、それは非常に良いようです - それはかなりうまくいきました。私たちは、単に外部サービス用に設定されたURLを変更し、次のように記録します。

java -jar wiremock-standalone-2.3.1.jar \ 
    --port 8080 \ 
    --proxy-all="https://test-api.example.com/" \ 
    --record-mappings \ 
    --verbose 

これは、現在の作業ディレクトリにキャッシュフォルダを作成し、それはレコーダーを殺すとに切り替えることにより、再生モードに切り替えることができます再生:

しかし
java -jar wiremock-standalone-2.3.1.jar \ 
    --port 8080 \ 
    --verbose 

、私はAPIの使用の多くを記録するために、テスト回帰パックを流れる私のアプリのインスタンスを設定する必要があり、そのオフを開始するために、実際にこれを使用するには、1日を言います。私はその後、レコーダーを停止し、キャッシュファイルを再生プロセスにコピーし、再生プロセスを再開する必要があります。

これはおそらく動作しますが、多くの可動部分のように感じられ、理想的には再生と録音を同時に実行したいと考えています。これにより、新しいAPI呼び出しが必要になった場合(自然なプロジェクト変更による)キャッシュが自動的にリフレッシュされますが、一致が見つかった場合はデフォルトで再生されます。

これは可能ですか?私はJavaのプログラマーではないが、もしWireMockプラグインを書く人がいれば利用可能かもしれないと思う。これがコンソールで行えれば素晴らしいだろうが、マニュアルの表現は、プレイヤーと記録が保守者によって別々のものと考えられることを示している。

Mountebankit might support thisのように見えますが、that play and record are separate modes here tooのように見えますか?いずれにしても、私はWireMockがいかに簡単に始められたかが好きです。可能であれば、それに固執したいと思います。

答えて

3

WireMockはかなりますが、現時点では求めているものを行うことはありません。

1)を再生するときは、--proxy-allパラメータとしませ--record-mappingsを使用することができます。これにより、既存のスタブマッピング(記録されているかそうでないもの)と一致しない要求が実際のサービスにプロキシされるようになります。

2)新しい記録されたマッピングを収集した後に、POST/__admin/mappings/resetエンドポイントに送信することになると、回避策が得られます。これにより、ファイルシステムがスキャンされ、すべてのマッピング(re)がロードされます。

+0

ありがとうございました。私は現時点では調査段階にありますが、私たちの実装については同僚にこれを指摘します。私は、APIキャッシュ(1日に1回実行)をリフレッシュするレコーダーを提供するDockerコンテナーと、実際のものをキャッシュするための再生モードを考えています。再起動のヒントは便利です - ここでは、自動再起動でSupervisordを使用することを考えていましたが、あなたのアプローチはもっと優雅に感じます。 – halfer

+0

心配はいりません。私はすぐにレコーダーを完全に書き直すことを考えていますので、このユースケースを念頭に置いておきます。 – Tom

+0

偉大な、私はそれが一般的に有用であることが期待される。 – halfer

関連する問題