Ich habe zwei Microservices mit Java Vertex geschrieben. Sie kommunizieren über Eventbus. Der erste sendet eine Nachricht und der zweite empfängt die Nachricht.So testen Sie Async-Vertex-Eventbus-Handler ohne Antwort senden
Erste Idee: Antworten Sie nur auf Vertx Eventbus-Meldungen im Komponententest.
Ich möchte diese Nachricht testen, ohne Fehler verarbeitet wird und deshalb schreibe ich Unit-Test auf dem zweiten Micro, die die Antwort überprüft
eventbus.send("address", message, reply -> {
if (reply.succeeded()) {
context.async().complete();
} else {
context.fail();
}});
Jetzt muss ich die Antwort in meinem Verbraucher senden, aber ich tun möchte, es nur im Test, ich brauche keine Antworten in der Produktion zu senden. Ich möchte CPU und Netzwerk nicht verbrauchen, um Antworten in der Produktion zu senden. Also, was ich suche ist so etwas wie dieses:
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();
}
});
Zweite Idee kam nach cdelmas comment und ist in my own answer
Sieht aus wie die zweite Idee erfüllt, nicht wahr? – cdelmas