使用Spring Boot,我刚刚添加了驼峰。
我有一个简单的驼峰路线设置:
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("file://in").to("file://out");
}
}
当我尝试使用以下方法为此路线创建简单测试时:
@RunWith(CamelSpringBootRunner.class)
@SpringBootTest
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class MyRouteTest extends CamelTestSupport {
@Autowired
private CamelContext camelContext;
@Produce(uri = "file://in")
private ProducerTemplate producerTemplate;
@EndpointInject(uri = "mock:file://out")
private MockEndpoint mockEndpoint;
@Test
public void routeTest() throws Exception {
mockEndpoint.expectedMessageCount(1);
producerTemplate.sendBody("Test");
mockEndpoint.assertIsSatisfied();
}
}
失败了
mock://file://out Received message count. Expected: <1> but was: <0>
不确定这里有什么问题。我有生产者模板,其中uri作为我的路线从点到使用EndpointInject和模拟uri模拟到端点?
答案 0 :(得分:1)
已修复,但不是100%
如果我改变真实路线
from("file://in").to("file://out");
到
from("file://in").to("mock:out");
在我的测试覆盖中
@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new MyRoute();
}
创建特定路线
最奇怪的是!不得不删除:
@SpringBootTest
之后
private CamelContext camelContext;
然后它开始工作了!
但遗憾的是不是我需要的东西,还有一些东西需要修复,我想用我真正的产品路线!
from("file://in").to("file://out");
如果可能的话,不要在路线上使用建议,但只是嘲笑它,尝试过 mock:file://在测试中,但它没有工作:( 而且,它不适用于@SpringBootTest ???很奇怪?!
答案 1 :(得分:0)
如果我没有被误解,您正在模拟输出端点,但您的端点端点是文件端点。发送消息时,您需要在文件端点轮询时删除消息。否则你也需要嘲笑它。
答案 2 :(得分:0)
您需要添加
@Override
public String isMockEndpoints() {
return "*";
}
这应该模拟所有的点,然后你可以使用mock:file:out例如