Apache camel 简单骆驼测试失败,未收到任何消息
我使用的是Spring Boot,我刚刚添加了camel 我有一个简单的骆驼路线设置:Apache camel 简单骆驼测试失败,未收到任何消息,apache-camel,Apache Camel,我使用的是Spring Boot,我刚刚添加了camel 我有一个简单的骆驼路线设置: import org.apache.camel.builder.RouteBuilder; import org.springframework.stereotype.Component; @Component public class MyRoute extends RouteBuilder { @Override public void configure() throws Exception
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>
mock://file://out 收到的邮件数。预期:但是:
不确定这里会有什么问题。我有一个生产者模板,该模板将uri作为从点到端点的路由,并使用EndpointInject和mock uri模拟到端点?如果我没有错,您模拟的是输出端点,但您的端点是文件端点。发送消息时,需要将消息放到文件端点轮询的任何位置。否则,您也需要模拟它。已修复,但不是100% 如果我从真实路线改变路线
from("file://in").to("file://out");
到
在我的测试中
@Override
protected RoutesBuilder createRouteBuilder() throws Exception {
return new MyRoute();
}
创建特定路线的步骤
最奇怪的是!必须删除:
@SpringBootTest
然后呢
private CamelContext camelContext;
然后它开始工作了
但不幸的是,这不是我需要的,仍然有一些事情需要解决,我想用我真正的prod路线
from("file://in").to("file://out");
如果可能的话,不要在路线上使用advice,而只是模仿它,用
嘲弄:file://out 在测试中,但它不起作用:(
而且,它不适用于@SpringBootTest???非常奇怪?!您需要添加
@Override
public String isMockEndpoints() {
return "*";
}
这应该模拟所有enpoint,然后您可以使用mock:file:out,例如sry,但我很困惑,不太确定您的想法是什么。我认为这个producerTemplate.sendBody(“测试”);将在路由中放置消息?是的,但您的路由正在侦听文件终结点而不是直接终结点。您的错误是,该路由需要一条消息,但没有收到任何消息。请将模拟终结点添加到您的文件中,并改为将消息发送到终结点mock:file:in。或者使用replaceFromWith()。请参阅此处的配置详细示例:已尝试,相同的错误,奇怪的thx,有效!仍然不确定为什么@SpringBootTest注释不起作用
@Override
public String isMockEndpoints() {
return "*";
}