Я сейчас настраиваю тесты с помощью CamelBlueprintTestSupport.
В моем blueprint.xml я попробовал следующую реализацию:
<reference id="foo" interface="com.myexample.FooInterface" />
Пересмешивающий FooInterface в моем тестовом классе с
protected void addServicesOnStartup(Map<String, KeyValueHolder<Object, Dictionary>> services) {
FooInterface foo = Mockito.mock(FooImpl.class);
services.put(FooInterface.class.getCanonicalName(), asService(foo, null));
super.addServicesOnStartup(services);
}
работаетнормально (где FooImpl реализует FooInterface, конечно), например, выполнение теста (тест просто содержит assert (true), потому что я хотел бы только проверить конфигурацию теста) заканчивается положительно.
Но в моем реальномРеализация, у меня нет интерфейса в качестве службы. Вместо этого на этот класс ссылаются следующим образом:
<bean class=com.myexample.FooBar" id="foobar">
<property name="foo" ref="foo" />
</bean>
<bean class="com.myexample.FooImpl" id="foo"/>
<reference id="fooBarReference"
component-name="foobar"
interface="com.myexample.FooImpl" ext:proxy-method="classes" />
Моя фиктивная конфигурация в тесте такая:
protected void addServicesOnStartup(Map<String, KeyValueHolder<Object, Dictionary>> services) {
FooImpl foo = Mockito.mock(FooImpl.class);
services.put(FooImpl.class.getCanonicalName(), asService(foo, null));
super.addServicesOnStartup(services);
}
Выполнение теста теперь завершается неудачей со следующим исключением:
java.lang.RuntimeException: ожидал BlueprintContainer из пакета "FooTest" в com.myexample.test.FooTest.setUp (FooTest.java:49)
Iне вижу, что на самом деле не так. Кстати, реализация верблюжьего маршрута на Карафе проходит без проблем. Я не знаю, если мой тест настроен неправильно или это ошибка в CamelBlueprintTestSupport.