我检查骆驼在行动2章 - 9例子,搜索这previous question和this user-group thread,但仍停留...骆驼replaceFromWith和模拟JMS目的地 - 春天引导
我使用的春季 - 引导和骆驼2.18.x 我想这两个examples from Camel sample code合并成一个:以mockEndpoint也replaceFrom
工作场景:
- 我创建了一个考试路线直接 - > SEDA
- 我用Advicewith,并模拟所有端点
- 我的测试工作正常
工作场景:
- 我改变了目的地,有直接 - > jms
- 我最后得到一个异常,并看到JMS无法创建会话。
后市展望:我认为JMS将由模拟来代替,并且日志似乎表明如此。不知道为什么JMSProducer仍然被调用。这是预期的行为?
样品路线:
from("direct:start")
.id("testroute")
.log("${body}")
//.to("seda:finish") //This works okay
.to("jms:XYZ_Q")
;
单元测试类:
@RunWith(CamelSpringBootRunner.class)
@MockEndpoints
@UseAdviceWith
@SpringBootTest(classes = {UnitTestApplication.class, SampleTest.class})
public class SampleTest {
@Autowired
private CamelContext camelContext;
@Autowired
private ProducerTemplate producerTemplate;
@Test
public void test01() throws Exception {
RouteDefinition route = camelContext.getRouteDefinition("testroute");
AdviceWithRouteBuilder adviceWithRB = new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
replaceFromWith("direct:renamed");
}
};
route.adviceWith(camelContext, adviceWithRB);
camelContext.start();
producerTemplate.sendBody("direct:renamed", " 8888888820130601");
}
}
我预计JMS组件将不会尝试做任何事情,但将通过模拟来代替。这是不正确的理解?