У меня есть серия «конвейерных» компонентов, которые все общаются через очереди сообщений ActiveMQ. Каждый компонент использует Camel для обработки каждой из этих очередей в качестве конечной точки. Каждый компонент использует один и тот же базовый шаблон:Тестирование верблюда с MockEndpoints
где каждый компонент потребляет сообщения из-за входную очередь, обрабатывает сообщение (ов), а затем помещает 1+ сообщения на очереди исходящих/вывода. Затем очередь «output» становится «входной» очередью для следующего компонента в цепочке. Довольно простой.
Теперь я пытаюсь свернуть рукава и провести модульное тестирование для каждого компонента, используя MockEndpoints
, предоставленный API-интерфейсом Camel. Я перелил javadocs и несколько примеров на веб-сайт Camel, но мне трудно связаться со всеми точками.
Мне кажется, что для каждого компонента, часть моего модульного тестирования будет хотеть выполнить следующие три вещи:
- тест, чтобы увидеть, если есть сообщения, ожидающие определенный на «вход "очередь
- Потяните эти сообщения вниз и обработать их
- Push-новые сообщения на„очереди вывода“и убедитесь, что они сделали это там
I быть Лиеве Мне нужно создать MockEndpoints
для каждой очереди, как так:
@EndpointInject(uri = "mock:inputQueue")
protected MockEndpoint intputQueue;
@EndpointInject(uri = "mock:outputQueue")
protected MockEndpoint outputQueue;
Так что теперь, в моих тестовых методов JUnit, я могу настроить ожидания и взаимодействовать с этими конечными точками:
@Test
public final void processMethodShouldSendToOutputQueue()
{
Component comp = new Component();
comp.process();
outputQueue.assertIsSatisfied();
}
Я просто не понимая, как подключить все правильно:
- Как подключить
comp
кinputQueue
иoutputQueue
MockEndpoints? - Для каждого
MockEndpoint
, как мне настроить ожидания, чтобыassertIsSatisfied()
проверял, что сообщение присутствует внутри конкретной очереди или что определенная очередь содержит сообщения?
HTTP: // StackOverflow. com/questions/5664331/how-to-unit-test-production-routes-in-apache-camel –