【发布时间】:2017-12-27 17:09:18
【问题描述】:
我是 Camel 新手,正在尝试一些代码来了解 MockEndpoints 功能的工作原理,但它不起作用。这是我想使用 MockEndpoints 进行单元测试的骆驼路线。属性值在 application.properties 文件中定义。
from("kafka:{{kafka.servers}}?topic={{kafka.consumer.topic}}&groupId={{kafka.consumer.groupId}}")
.to("direct:notify");
from("direct:notify")
.log("direct:notfy");
这是我的测试代码,它未能收到 1 Exchange 的断言。生产者似乎从未将消息发送到我的 Kafka Mockendpoint:
@RunWith(SpringRunner.class)
@SpringBootTest
@MockEndpointsAndSkip("kafka:{{kafka.servers}}?*|direct:notify")
public class NotificationApplicationTests {
@Autowired
private CamelContext context;
@Value("${kafka.servers}")
private String kafkaServers;
@EndpointInject(uri="mock:kafka:{{kafka.servers}}")
private MockEndpoint mockKafka;
@EndpointInject(uri="mock:direct:notify")
private MockEndpoint mockDirect;
@Autowired
private ProducerTemplate notiProducer;
@Test
public void testMockEndpoints() throws Exception{
mockDirect.setExpectedMessageCount(1);
mockDirect.whenAnyExchangeReceived( (Exchange exchange) -> {
//NEVER GETS HERE!!
log.info("MOCK DIRECT exchange received");
});
String payload = "{'email': 'test@gmail.com', 'data': 'ABC1234'}";
notiProducer.sendBody(mockKafka, payload);
mockDirect.assertIsSatisfied();
}
}
【问题讨论】:
标签: apache-camel