У меня есть ряд «конвейерных» компонентов, которые все обмениваются данными через очереди сообщений ActiveMQ. Каждый компонент использует Camel для обработки каждой из этих очередей как конечной точки. Каждый компонент использует один и тот же базовый шаблон:
Когда каждый компонент потребляет сообщения из входной очереди, обрабатывает сообщение (я), а затем помещает 1+ сообщений в исходящую / выходную очередь. «Выходная» очередь становится «входной» очередью для следующего компонента в цепочке. Довольно простой.
Сейчас я пытаюсь засучить рукава и провести модульное тестирование для каждого компонента с помощью MockEndpoints
, предоставляемых тестовым API Camel. Я проливал javadocs и несколько примеров на веб-сайте Camel, но мне трудно соединить все точки.
Мне кажется, что для каждого компонента часть моего модульного тестирования должна выполнить следующие три задачи:
Я полагаю Мне нужно создать 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 ()
проверяет, присутствует ли сообщение в определенной очереди или что конкретная очередь содержит сообщения?