残りのエンドポイントである限り、スプリング ブート アプリケーションでいくつかのストリーム プロデューサー ( @Output
) とコンシューマー ( ) を定義しました。@Input
今、REST + ストリームの両方をテストしたい
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
まず、これが可能かどうかを知りたいです。REST の場合、TestRestTemplate を自動配線していますが、すべてうまくいきます。
@Autowired
private TestRestTemplate restTemplate;
しかし、私が使用しようとしているストリームの場合:
@ClassRule
public static RabbitTestSupport rabbitTestSupport = new RabbitTestSupport();
これにより、Rabbit が起動しているかどうかを認識できます。これは正常に機能していますが、
@Autowired
private MessageChannel myProducer;
メッセージを送信すると、エラーは発生しませんが、メッセージはアプリによって消費されません。
プロデューサーとコンシューマーの両方が、分離されたコンテキストではなく、アプリの一部として開始されているように感じました。そのため、これは機能していません。
プロデューサーとコンシューマーは別々のアプリで正常に動作しているため、テスト構成に関連するものと思われます。
何か案は?@SpringBootTest
参照が見つからなかったため、誰かが同じテストでRESTとストリームの両方をテストできましたか?
ここに再現子を追加しています: https://github.com/Salaboy/test-spring-cloud-streams/
これらのプロパティを使用するもの: https://github.com/Salaboy/test-spring-cloud-streams/blob/master/src/test/resources/test-application.properties
あなたが提供できるどんな助けにも感謝します。