Как смоделировать несколько компонентов в модульном тестировании camel?

#unit-testing #apache-camel

#модульное тестирование #apache-camel

Вопрос:

Я использую CamelTestSupport верблюжью версию 2.13.1.

Я бы хотел сделать что-то подобное, чтобы смоделировать два разных компонента:

 @Override
public String isMockEndpoints() {
    return "(activemq|exec)*";
}
 

Я не могу просто издеваться над всем с помощью «*», потому что я получал ошибки от используемого мной фреймворка activiti, который зависит от activiti компонента.

Кто-нибудь из вас нашел способ сделать что-то подобное?

Комментарии:

1. Я не использую isMockEndpoints, поэтому не могу вам здесь помочь, но я делаю макет uri конечной точки, который вы можете сделать «детализированным» (это слово?), Как вам нравится. Например. издеваемый uri может выглядеть как mock:<your-uri> и т. Д. Затем у меня есть настройки test и prod, которые обозначают uri с или без «макета» впереди.

2. Я понимаю, что вы говорите. С помощью этого конкретного пакета я пытаюсь смоделировать существующие маршруты для более интеграционного теста.

3. Я делаю что-то подобное; для тестов (запускаемых, например, с помощью junit, но не совсем модульных тестов, больше похожих на интеграционные тесты) У меня есть другой файл контекста (который включает в себя мой основной файл контекста, но переопределяет несколько вещей, загружает другой файл свойств и т.д.). Свойства для test используют макет uri, тогда как свойства для prod этого не делают. Модульный тест загружает соответствующие настройки и запускается с макетами и т. Д. Для вашего маршрута требуется использовать свойство для <to> или <from> и т. Д. uri, Которое затем устанавливается в соответствии с реквизитами prod / test . Это только один способ сделать это, я уверен, что есть и другие.

Ответ №1:

Вы можете использовать регулярное выражение, так что это что-то вроде:

  return "(activemq.*|exec.*)" 
 

Смотрите внизу этой страницы
http://camel.apache.org/intercept