简单的Camel测试失败,没有收到任何消息

时间:2017-08-27 15:50:00

标签: apache-camel

使用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模拟到端点?

3 个答案:

答案 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例如