我想测试我的Apache Camel路由,这些路由在Spring中与Cucumber连接在一起。
我的测试看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners([DependencyInjectionTestExecutionListener.class])
@ContextConfiguration(locations = ["/cucumber.xml"])
Class TestEnvironment {
public TestEnvironment(){
@Autowired
ProducerTemplate superTemplate
//more foo
}
World() {
new TestEnvironment()
}
Before() {}
Given(~/I want to send a Message "([^"]+)" to my "([^"]+)" Camel Route./) { String greatMessageString, String endpointURI ->
MockEndpoint fakeEndpoint = getMockEndpoint(endpointURI)
fakeEndpoint.expectedMessageCount(1)
superTemplate.sendBody(fakeEndpoint, greatMessageString) //always 'cannot invoke sendBody() on null object'
}
superTemplate永远不会链接到我的任何Camel路线。所以我尝试用CamelSpringTestSupport扩展TestEnvironment。
Class TestEnvironment extends CamelSpringTestSupport {
protected AbstactXmlApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext(["/cucumber.xml"])
}
使用CamelSpringTestSupport扩展类时,template()方法通常可用作ProducerTemplate。但它也没有为我的路线选择CamelContext。模板始终为null。 TestEnvironment的上下文也是如此。
我觉得我已经非常接近,但缺乏一定的注释或其他......感谢新的输入。 干杯