2017-11-24 9 views
0

私は内部で外部レストAPIのhttpクライアントとして機能する残りのAPIを公開するSpringブートアプリケーションを持っています。Springブートアプリケーションのhoverflyプロキシを使用restTemplate

My Junitテストクラスに@SpringBootTestというアノテーションが付けられているため、アプリケーションはエンドポイントを開始して公開します。

シミュレーションモードでHoverflyRuleを使用すると、アプリケーションの残りのAPIにプロキシ要求を送信できますが、アプリケーションが外部エンドポイントに到達するために使用するrestTemplateでは機能しません。それは、外部APIからの擬似応答でアプリケーションがどのように動作するかをテストしたいだけです。

このシナリオはhoverfly-java?の対象外です。私は間違って混乱していますか?

答えて

0

Hoverflyはあなたのために模擬サーバーを実行します - それはRestTemplateの存在自体を認識していません。残りのテンプレートに正しいHoverflyエンドポイントを要求するように指示するのはあなたの責任です。

一つの可能​​な解決策は、例えば、あなたのapplication.properties内部構成エントリとしてエンドポイントを持つことです。

external-resource.endpoint=http://fancy-stuff.com 

とあなたのクラスに注入:

@Value("${external-resource.endpoint}") 
private String endpoint; 

restTemplate.get(endpoint, ...); 

その後、あなたは、アプリケーションのテストを持つことができます.propertiesは、Hoverflyの模擬エンドポイントを指す正しいエンドポイントを持つことができるテスト専用の設定です。

#Hoverfly mocked endpoint 
external-resource.endpoint=http://localhost:9000 

この場合、テストクラスに@ActiveProfiles("test")を入力するだけで "テスト"プロファイルが有効になり、エンドポイントの値がHoverflyになります。

希望します。

+0

ありがとうございます。それは理にかなっていますが、私はランダムなポート選択を利用したいと思います。 CIパイプラインで固定ポート番号を使用することはできません。 – PRF

関連する問題