Problem:
Proces składa się z wielu podprocecsów działających asynchronicznie. Komunikują się za pomocą Kafki.
Chcę taki proces przetestować: wysłać żądanie i gdy przyjdzie powiadomienie, że proces został ukończony to sprawdzić na bazie to co proces wypluł.
Pomockowałem sobie kafkę i proces działa, ale nie wiem jak to napisać bez tej pętli while. A nawet jak ją mam to nie wiem jak zatrzymywać test, gdy jest OK, albo jak zatrzymywać, gdy jest błąd.
void shouldRunProcessWithSuccess() {
kafkaMock.send("start-process");
kafkaMock.addListener(// ... jeśli otrzymasz "process-success" to { checkDatabase(); kafkaMock.stop() }
kafkaMock.addListener( // ... jeśli otrzymasz "process-failure" to { fail(); kafkaMock.stop() }
while (kafkaMock.isRunning()) { }
}
te consumery nigdy nie sfailują testu, bo są odpalane w innym wątku.