2017-12-29 36 views
1

@RestController@MessagingGatewayを使用していますが、Spring REST DocsにSpring Integrationコンポーネントをモックするためのサポートが組み込まれているかどうかは疑問です。 Spring REST Docsを活用してこのシナリオのドキュメントを生成する最良の方法は何ですか(具体的には、@MessagingGatewayを模擬するためのサポートされている方法は何ですか)。@ REST DocsテストのMocking @MessagingGateway

+0

あなたの意図がはっきりしません。 REST Docsは、REST APIを文書化するのに役立ちます。 'MessagingGateway'はRESTメソッドの中で使われるかもしれませんが、APIの一部とはみなされません。任意の標準モッキングツール(Mockitoなど)でゲートウェイメソッドをモックできます。おそらく私はあなたの質問に何かを見逃しています。もしそうなら、あなたの質問を編集して、詳細と、おそらくあなたが意味するものの例を展開してください。 –

+0

RestTemplateを使ってリモートAPIを呼び出すときに '@ AutoConfigureStubRunner'と同等のものを探していました。別の私の郵便で、あなたが私を私の代わりにしてくれたことを覚えているかもしれません(https://stackoverflow.com/questions/47948454/messaginggateway-spring-cloud-stream-and-error-handling-across-both)。 Spring Cloud Streamを利用するリクエストを非同期で処理するために、すべてのバックエンドサービスを変更した後、RestTemplateを使用して '@ MessagingGateway'でリモートAPIを呼び出します。私はフロントエンドのREST APIを持っていますが、私はまだドキュメントを生成したいと思います。 –

+0

REST(API)ドキュメントとRESTコントローラの内部構造が混在しているようです。私の答えが役立つかどうかを確認してください。 '@ MessagingGatewau'は単なるインタフェースなので、それを模擬するのは簡単です。 –

答えて

1

あなたは、あなたがそれに注入モックインタフェースを持つコントローラに対してRESTドキュメントを実行したい意味ならば、このような何かが動作するはずです...

@Autowired 
private MyController controller; 

@Test 
public void restDocsWithMockGateway() { 
    MyGateway gate = mock(MyGateway.class); 
    willReturn(new Bar("xxx")).given(gate).foo(any(Foo.class)); 
    this.controller.setMyGateway(gate); // replace the SI implementation with the mock 

    // now do mockmvc stuff with REST Docs 

} 

しかし

@MessagingGateway 
public interface MyGateway { 

    Bar foo(Foo foo); 

} 

を仮定しますゲートウェイを嘲笑することは、REST Docsとはまったく関係がありません。

これが意味することではない場合は、質問を拡大してください。

+0

autowiringを使用している場合は、テストから '@ IntegrationComponentScan'を省略し、モック' @ Bean'を追加するだけです。 –

関連する問題