2016-05-13 13 views
1

私は内部的に外部レストapisをサービスとして呼び出すgrails rest apiアプリケーションを持っています。私は統合テストケースを実行しながら外部API呼び出しサービスを模擬したい。統合テストケースでは、アプリケーション休憩APIへのリクエストを投稿しています。私は外部APIを模擬することができないので、外部APIにアクセスできない場合は失敗します。 統合テストケースで外部APIを呼び出すサービスを模擬する方法。Grails Spockインテグレーションテストの模擬

+0

問題がどこにあるかをどのように示唆することができます。 –

答えて

0

あなたの設定に外部APIへのURLを含めてみましょう。設定キーはmyConfigValueと呼ばれています。 WireMockをインストールし、JUnitのルールとして、テストサーバーを含める:the Grails manualで説明したように

@Rule 
WireMockRule mockServer = new WireMockRule(WireMockConfiguration.wireMockConfig().port(9900)) 

は、テストにモックサーバーのURLをフィード:

static doWithConfig(c) { 
    c.myConfigValue = "http://localhost:9900/" 
} 

その後、外部コールを検証し、スタブにしWireMockのAPIを使用します応答、例えば可能であればドキュメントを確認してください。

stubFor(get(urlEqualTo("/binary-body")) 
    .willReturn(aResponse() 
    .withBody(new byte[] { 1, 2, 3, 4 }))); 

WireMockに代わるものがありますが、私たちにとってはうまく機能していません。

+0

WireMockの代わりに、別のライブラリRatpackを使ってGrails 3アプリケーションをテストするブログ記事があります:http://kyleboon.org/blog/2015/07/18/stubbing-service-interactions-when-testing-microservices / –