如何用模擬替換重量級輸入終端並向其發送消息?駱駝 - 將消息發送到模擬輸入
說我有以下路線。
from("spring-ws:rootqname:{http://myNameSpace}SomeRequest?endpointMapping=#endpointMapping").
processor(new VeryComplicatedProcessor()).
to(etc).
to(etc)...
換句話說,一個春天的web服務,完成整個lotta處理。
測試此路線的一種方法是在網絡服務器中啓動web服務併發送消息,但這比我想要的要多得多。
相反,我預計,如果我mock all of my endpoints,我應該能夠做到這一點:
public class RouteTest extends CamelSpringTestSupport {
@Override
public String isMockEndpoints() {
return "*"; // mock everything
}
@Test
public void simpleDirectTest() throws Exception {
String realURI = "spring-ws:rootqname:{http://myNameSpace}SomeRequest?endpointMapping=#endpointMapping";
String mockedURI = "mock:" + realURI;
String msg = buildSomeSoapMsg();
Object out = template.requestBody(mockedURI, msg);
log.debug(out.toString());
}
...
}
...並有整條路線跑,回到我的反應。相反,我只是把信息發回給我,路線還沒有運行。
我對mock的理解是否正確?如果有,還有其他方法可以實現嗎?我真的很想避免實際啓動web服務來測試這些路由。
謝謝大家。
編輯 - 它看起來像我可以使用AdviceWith來解決這個問題的一分鐘,但建議似乎只能處理輸出,而不是像上述情況的輸入。
謝謝boday,我最終做到了前者,將服務分開並使用direct。驚訝的是,發送到模擬不會做伎倆,雖然.. –
很酷...起初模擬有點混亂,認爲它作爲目標端點轉儲消息來驗證 –