Я использую простую ловушку для событий в тестовой среде, чтобы собирать события и проверять их:
Код: Выделить всё
@Singleton
public class MessageListenerTestHelper {
private ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue();
@Async
@EventListener
public void onEvent(Object event) {
queue.add(event);
}
public Queue getQueue() {
return queue;
}
public Future getEventFromQueue(Class eventClass) {
CompletableFuture future = new CompletableFuture();
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
Optional eventOpt = queue.stream()
.filter(eventClass::isInstance)
.findAny();
if (eventOpt.isPresent()) {
future.complete((T) eventOpt.get());
}
}, 100, 100, TimeUnit.MILLISECONDS);
return future;
}
}
Я собираюсь отказаться от использования аннотации @MicronautTest и внедрять макеты вручную. Но, может быть, есть другой выбор?
Подробнее здесь: https://stackoverflow.com/questions/674 ... ronauttest
Мобильная версия