1
現在、Camelの模擬コンポーネントと連携しているImは、既存のルートでテストしたいと思います。基本的には、アプリに定義されている既存のルートを保持したいが、テスト中にいくつかの模擬テストを挿入して、現在の交換内容を確認するか、少なくとも確認する。モックで既存のラクダのエンドポイントをテストする方法は?
ドキュメントとApache Camel Cookbookに基づいています。
@RunWith(SpringRunner.class)
@SpringBootTest
@MockEndpoints
public class MockedRouteStubTest {
@Autowired
private ProducerTemplate producerTemplate;
@EndpointInject(uri = "mock:direct:foo")
private MockEndpoint mockCamel;
@Test
public void test() throws InterruptedException {
String body = "Camel";
mockCamel.expectedMessageCount(1);
producerTemplate.sendBody("direct:stub", body);
mockCamel.assertIsSatisfied();
}
}
メッセージカウントが0であることがより次のようになります。私はここでは、ルートビルダー
@Component
public class MockedRouteStub extends RouteBuilder {
private static final Logger LOGGER = LoggerFactory.getLogger(MockedRouteStub.class);
@Override
public void configure() throws Exception {
from("direct:stub")
.choice()
.when().simple("${body} contains 'Camel'")
.setHeader("verified").constant(true)
.to("direct:foo")
.otherwise()
.to("direct:bar")
.end();
from("direct:foo")
.process(e -> LOGGER.info("foo {}", e.getIn().getBody()));
from("direct:bar")
.process(e -> LOGGER.info("bar {}", e.getIn().getBody()));
}
}
はここに私のテスト(現在はそのspringbootプロジェクト)だだ@MockEndpoints
を使用しようとしました@MockEndpointsはトリガーされません。
c.i.InterceptSendToMockEndpointStrategy : Adviced endpoint [direct://stub] with mock endpoint [mock:direct:stub]
:
...
@Autowired
private CamelContext context;
@Before
public void setup() throws Exception {
context.getRouteDefinitions().get(0).adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
mockEndpoints();
}
});
}
起動ログはそのアドバイスが所定の位置にあることを示す: はまた、ログは、ログは、私が試した代替がアドバイスを使用することです
route.MockedRouteStub : foo Camel
トリガーされることを示しています
しかし、私のテストは、メッセージ数= 0で失敗します。
を、私は同じ質問がありました。私はこのようにしました。私の答えをここで確認してください https://stackoverflow.com/questions/42275732/spring-boot-apache-camel-routes-testing/44325673#44325673 – pvpkiran
Camelアノテーションを作成するには '@RunWith(CamelSpringRunner)'を使う必要があります有効になりました。 –
@ClausIbsenは、 'SpringRunner'の代わりに' CamelSpringRunner'で試しましたが、私はまだ0の予想メッセージ数を得ています。また、ログはメッセージが直接に送られたことを示しています:foo – geneqew