2016-09-19 14 views
7

私はFeignクライアントを利用するクラスを持っています。以前私はMockitoを使用し、Feignクライアントのメソッド呼び出しごとに応答を保存しました。 WireMockを使用したいので、私のコードがさまざまな種類の応答コードを正しく処理できることがわかります。これをどうやって行うのですか?テストで自分のFeignクライアントを配線する方法を理解できず、application.ymlファイルに設定したURLの代わりにWiremockを使用するように配線します。どんな指針も大変ありがとうございます。Spring BootアプリケーションでWireMockをFeignクライアントで使用する方法は?

答えて

3

たぶん、あなたはこれがあなたが(春・休息・ドキュメントを使用して)あなたのSpring MVCのテストでwiremockスニペットを生成し、公開することができます。このプロジェクトでhttps://github.com/ePages-de/restdocs-wiremock

を見てみたいです。

最後に、これらのスニペットを使用して、テストで記録された要求を処理するためのワイヤモックサーバーを開始できます。

この統合されたソリューションを恥ずかしがっている場合は、テスト中にwiremock JUnitルールを使用してワイヤモックサーバーを起動することができます。 http://wiremock.org/docs/junit-rule/ここ

ダイナミックwiremockポートを使用して、このポートを使用するようにリボンを設定するサンプルテストである:(?あなたは装うとリボンを使用している)

@WebAppConfiguration 
    @RunWith(SpringRunner.class) 
    @SpringBootTest() 
    @ActiveProfiles({"test","wiremock"}) 
    public class ServiceClientIntegrationTest { 

     @Autowired //this is the FeignClient service interface 
     public ServiceClient serviceClient; 

     @ClassRule 
     public static WireMockRule WIREMOCK = new WireMockRule(
       wireMockConfig().fileSource(new ClasspathFileSource("path/to/wiremock/snipptes")).dynamicPort()); 

     @Test 
     public void createSome() { 
      ServiceClient.Some t = serviceClient.someOperation(new Some("some")); 
      assertTrue(t.getId() > 0); 
     } 

//using dynamic ports requires to configure the ribbon server list accordingly 
     @Profile("wiremock") 
     @Configuration 
     public static class TestConfiguration { 

      @Bean 
      public ServerList<Server> ribbonServerList() { 
       return new StaticServerList<>(new Server("localhost", WIREMOCK.port())); 
      } 
     } 
    } 
+0

は答えてくれてありがとう!私はリボンを使用していない - 唯一のfeign。私は '@ FeignClient'と' url = externalApiUrl'を使用しています。代わりに代わりにwiremock URLを挿入できますか? – L42

+0

wiremockは実際にサーバを実行しているので、FeignClientが 'localhost:WIREMOCK.port'を指していることを確認してください。私は、URLが構成プロパティを指している可能性があるかどうかはわかりません。それは春の表現をサポートしていないようです。同様の質問では、ダイナミックなURLを持つためには、上記のテストで使用されているリボンとconfigメカニズムを使用することを提案された回答が提案しています。 http://stackoverflow.com/a/29278126/5371736 –

+0

春バージョンで苦労した後、私はもっと近いと思います。しかし、私のautowired feignクライアントは 'null'に設定されます。あなたはそれがなぜあるのか知っていますか?私の現在の計画は、@SpringBootTestのプロパティとしてwiremock URLを設定しようとしています。つまり、nullでないときは、クライアントがwiremockに移動します。 – L42

関連する問題