【发布时间】:2019-03-01 22:42:41
【问题描述】:
我编写了一个 Camel-Route,它使用带有 Processor 的 DLC 模式,该模式在 Exchange 发送到 DLC 之前执行。
errorHandler(deadLetterChannel("{{myDLCEndpoint}}")
.onPrepareFailure(getErrorProcessor()));
在我的路线中,我抛出了一个 RuntimeException,然后由 errorProcessor 和 DLC 处理。当我启动应用程序并让路由运行时,一切都按预期工作。
现在我想编写一个单元测试,只是确保它有效。
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@RunWith(SpringRunner.class)
public class MyRouteTest {
@MockBean
private ErrorProcessor errorProcessor;
@EndpointInject(uri = "{{quelle}}")
private ProducerTemplate quelle;
@EndpointInject(uri = "{{myDLCEndpoint}}")
private ProducerTemplate dlc;
@Test
@Transactional("myDataSourceTransactionManager") //For Rollback
public void test() throws Exception {
Mockito.verify(errorProcessor, never()).process(Mockito.any());
String inputXML = TestDataReader.readXML("myfile.xml");
assertNotNull(inputXML);
quelle.sendBody(inputXML);
}
}
我开始测试并检查了日志,不幸的是,在执行路由期间发生了异常。异常由骆驼处理,并且肯定会调用模拟的错误处理器,因为我对其进行了调试:
不幸的是,即使使用Mockito.verify(errorProcessor, never()).process(Mockito.any());,单元测试仍然成功
现在我不知道为什么它没有失败,这将是我在这种情况下所期望的结果?
【问题讨论】:
标签: java unit-testing spring-boot apache-camel mockito