Camel Spring Boot MockEndpoint 断言未按预期工作
Camel Spring Boot MockEndpoint assertion not working as expected
我的测试应用可以用CamelSpringBootApplicationController正常启动。但是,当我进行集成测试时,MockEndpoint 的断言没有按预期工作。下面列出了我的测试代码的快照。我做错了什么吗?
Application.java
@SpringBootApplication
public class Application {
....
public static final String DIRECT_BT_INPUT = "direct:btInput";
public static final String DIRECT_BT_OUTPUT = "direct:btOutput";
@Bean
public RouteBuilder RouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from(DIRECT_BT_INPUT).log("${body}").to(DIRECT_BT_OUTPUT);
from(DIRECT_BT_OUTPUT).log("done");
}
};
}
}
BTRouteUnitTest.java
@RunWith(CamelSpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@MockEndpoints(Application.DIRECT_BT_OUTPUT)
public class BTRouteIT {
@Autowired
protected CamelContext camelContext;
@EndpointInject(uri = "mock:" + Application.DIRECT_BT_OUTPUT)
protected MockEndpoint mockBtOutput;
@Produce(uri = Application.DIRECT_BT_INPUT)
protected ProducerTemplate producerTemplate;
@Test
public void test() throws InterruptedException {
mockBtOutput.expectedBodiesReceived("Hello");
producerTemplate.sendBody("Hello");
MockEndpoint.assertIsSatisfied(camelContext);
}
}
您正在 camel-test-spring 中使用 CamelSpringJUnit4ClassRunner
进行测试。 Camel spring 测试用于常规 spring,而不是 spring-boot。
改为使用 SpringJUnit4ClassRunner
测试运行程序。
Camel 尚不支持@MockEndpoint Spring Boot.
解决方法:将端点 uri 移动到属性文件(在路由定义中使用 {{}})并使用不同的 属性 文件,在其中用 mock:orginalUri.
替换原始端点 uri
我的测试应用可以用CamelSpringBootApplicationController正常启动。但是,当我进行集成测试时,MockEndpoint 的断言没有按预期工作。下面列出了我的测试代码的快照。我做错了什么吗?
Application.java
@SpringBootApplication
public class Application {
....
public static final String DIRECT_BT_INPUT = "direct:btInput";
public static final String DIRECT_BT_OUTPUT = "direct:btOutput";
@Bean
public RouteBuilder RouteBuilder() {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from(DIRECT_BT_INPUT).log("${body}").to(DIRECT_BT_OUTPUT);
from(DIRECT_BT_OUTPUT).log("done");
}
};
}
}
BTRouteUnitTest.java
@RunWith(CamelSpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
@MockEndpoints(Application.DIRECT_BT_OUTPUT)
public class BTRouteIT {
@Autowired
protected CamelContext camelContext;
@EndpointInject(uri = "mock:" + Application.DIRECT_BT_OUTPUT)
protected MockEndpoint mockBtOutput;
@Produce(uri = Application.DIRECT_BT_INPUT)
protected ProducerTemplate producerTemplate;
@Test
public void test() throws InterruptedException {
mockBtOutput.expectedBodiesReceived("Hello");
producerTemplate.sendBody("Hello");
MockEndpoint.assertIsSatisfied(camelContext);
}
}
您正在 camel-test-spring 中使用 CamelSpringJUnit4ClassRunner
进行测试。 Camel spring 测试用于常规 spring,而不是 spring-boot。
改为使用 SpringJUnit4ClassRunner
测试运行程序。
Camel 尚不支持@MockEndpoint Spring Boot.
解决方法:将端点 uri 移动到属性文件(在路由定义中使用 {{}})并使用不同的 属性 文件,在其中用 mock:orginalUri.
替换原始端点 uri