私はFeignクライアントを利用するクラスを持っています。以前私はMockitoを使用し、Feignクライアントのメソッド呼び出しごとに応答を保存しました。 WireMockを使用したいので、私のコードがさまざまな種類の応答コードを正しく処理できることがわかります。これをどうやって行うのですか?テストで自分のFeignクライアントを配線する方法を理解できず、application.yml
ファイルに設定したURLの代わりにWiremockを使用するように配線します。どんな指針も大変ありがとうございます。Spring BootアプリケーションでWireMockをFeignクライアントで使用する方法は?
7
A
答えて
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()));
}
}
}
関連する問題
- 1. spring-bootなしでeureka + feignを使用するには?
- 2. spring-bootの外側でnetflix-feignを使用する例
- 3. spring boot feignクライアントがHTTPを取得している404
- 4. Feignクライアントを使用してリクエストヘッダーを設定する方法は?
- 5. Spring Cloud Feignクライアントの微調整方法は?
- 6. ReactのBrowserRouterをクライアントで使用し、Java REST API(Spring Boot)をサーバー上で使用する方法は?
- 7. GradleでSpring Bootアプリケーションのメインクラスを設定する方法は?
- 8. Spring BootアプリケーションでJPAトランザクションを実装する方法は?
- 9. SpringクラウドでHystrixPropertyをFeignリクエストに設定する方法は?
- 10. JUnitTestsでObjectMapperを使用する方法 - Spring Boot app
- 11. Spring Boot/Dataでボルトドライバを使用する方法Neo4j
- 12. Spring SecurityでSpring Bootでセッションを管理する方法は?
- 13. feignクライアントを使用すると、Springサービスがコンテンツを返しません。
- 14. Spring Boot - Spring-KafkaクライアントIDのapplication.propertiesでホスト名を取得する
- 15. Spring Boot RESTアプリケーションでクラスを再利用するには?
- 16. Spring WebSluxアプリケーションでSpring WebSessionIdResolverをSpring Security 5で使用する方法は?
- 17. Spring BootアプリケーションでTomcatがハングする
- 18. Spring Boot Securityを使用してクライアント側で証明書の検証を無効にする方法
- 19. Spring Boot Developerツールを使用している場合、IntelliJがSpring Boot/Developerアプリケーションを起動できない
- 20. MVCを使用したSpring Bootアプリケーション内のSpring Cloudコンフィグレーションサーバ
- 21. spring-cloud-streamアプリケーションはspring-bootなしで可能ですか?
- 22. Feignクライアントがサービスをロードできない
- 23. WARブートデプロイメントなしでSpring Bootを既存のTomcatで使用する方法
- 24. Spring Boot [.exitを正しく使用する方法]
- 25. Spring Bootアプリケーションのセッション
- 26. Spring Boot + SpringデータでカスタムDataSourceを作成する方法
- 27. Spring BootマイクロサービスでSpring Cloud Sleuthを設定する方法
- 28. Feign-ClientでHostnameVerifierをspring-cloud-netflix-feignから設定するには
- 29. 基本的な例としてFeignクライアントを使用できない
- 30. Spring Boot:プロパティファイルから変数を持つクラスで@RestControllerを使用する方法
は答えてくれてありがとう!私はリボンを使用していない - 唯一のfeign。私は '@ FeignClient'と' url = externalApiUrl'を使用しています。代わりに代わりにwiremock URLを挿入できますか? – L42
wiremockは実際にサーバを実行しているので、FeignClientが 'localhost:WIREMOCK.port'を指していることを確認してください。私は、URLが構成プロパティを指している可能性があるかどうかはわかりません。それは春の表現をサポートしていないようです。同様の質問では、ダイナミックなURLを持つためには、上記のテストで使用されているリボンとconfigメカニズムを使用することを提案された回答が提案しています。 http://stackoverflow.com/a/29278126/5371736 –
春バージョンで苦労した後、私はもっと近いと思います。しかし、私のautowired feignクライアントは 'null'に設定されます。あなたはそれがなぜあるのか知っていますか?私の現在の計画は、@SpringBootTestのプロパティとしてwiremock URLを設定しようとしています。つまり、nullでないときは、クライアントがwiremockに移動します。 – L42