我檢查駱駝在行動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組件將不會嘗試做任何事情,但將通過模擬來代替。這是不正確的理解?