Java vertx で作成された 2 つのマイクロサービスがあります。それらはイベントバスを介して通信します。1 つ目はメッセージを送信し、2 つ目はメッセージを受信します。
最初のアイデア: 単体テストで Vertx イベントバス メッセージにのみ応答します。
メッセージがエラーなしで処理されていることをテストしたいので、返信をチェックする 2 番目のマイクロサービスに単体テストを記述します
eventbus.send("address", message, reply -> {
if (reply.succeeded()) {
context.async().complete();
} else {
context.fail();
}});
コンシューマーで返信を送信する必要がありますが、テストでのみ実行したいので、本番環境で返信を送信する必要はありません。本番環境で返信を送信するために CPU とネットワークを消費したくありません。だから私が探しているのは次のようなものです:
vertx.eventBus().consumer("address", handler -> {
Boolean success = methodMayFail();
if ( MY_CONTEXT_IS_TEST || HANDLER_IS_LOCAL_AS_I_ONLY_SENT_LOCAL_MESSAGES_FROM_TEST) {
success ? handler.reply("ok") : handler.fail();
}
});
2番目のアイデアはcdelmasのコメントの後に来て、私自身の答えにあります