假设我有一条这样的阿帕奇骆驼路线:
from("direct:start")
.routeId("aRouteId")
.bean(someBusinnessTransformationBean).id("transformationBean")
.bean(aPersistenceBean).id("persistenceBean")
.to("direct:target");
然后,在我的单元测试中,我做了这样的事情:
public class RouteTest extends CamelTestSupport {
@Override
public boolean isDumpRouteCoverage() { return true }
@Override
public boolean isUsedAdviceWith() { return true }
@EndpointInject(uri = "mock:mockTransformationBean")
protected MockEndpoint mockTransformationBean;
@EndpointInject(uri = "mock:mockPersistenceBean")
protected MockEndpoint mockPersistenceBean;
@Test
public void testRoute() throws Exception {
context.getRouteDefinition("aRouteId").adviceWith(context, new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
weaveById("transformationBean")
.replace()
.multicast()
.to(mockTransformationBean);
weaveById("persistenceBean")
.replace()
.multicast()
.to(mockPersistenceBean);
}
});
context.start();
// Asserts the expectedMessageCount
// Send a message with template.sendBody...
assertMockEndpointSatisfied();
}
}
问题:
我如何才能正确地对这个路由进行单元测试,而不是仅仅确保messageCount和received body(在第一个bean上)。
比如,如何模拟MockEndpoint的响应,就像使用Mockito进行单元测试时一样:
when(mockTransformationBean.someHandler(...)).thenReturn(anExpectedObjectForMyUnitTestPropose);
干杯尼古拉斯
您可以单独构建交换并调用bean方法;也就是说,不要通过Camel发送它们——直接调用bean。这是一个更受控制和更有针对性的单元测试。
经过一些研究、文档阅读等等,我提出了一个可以接受的解决方案:
weaveById("transformationBean")
.replace()
.to(mockTransformationBean)
.setBody(constant(<myExpectedMockResponse>));
所以以后,我可以像这样做断言:
mockPersistenceBean.expectedBodiesReceivedInAnyOrder(
<myExpectedMockResponse>
);
这样,不仅可以确保bean和endpoint接收到正确的主体/头,还可以确保路由之间的任何转换也正确进行。
因此,可以从单元的角度测试代码的输入和输出,而不是将其与单元测试中不必要的许多其他组件集成。
问题内容: 我正在尝试用python制作文字游戏。但是一切顺利,我想创建一个函数,使我可以在终端上打印一些东西,但是戴着帽子看起来像打字。 目前我有: 输出为: 有没有办法消除字母之间的空格? 问题答案: 在Python2.x中,您可以使用代替: 在Python 3.x中,您可以将可选参数设置为空字符串:
问题内容: 问题: 我希望能够 在Java中 以通用方式访问 Java对象的 任何属性/字段,就像动态语言(例如Groovy,JavaScript)一样。在编写此管道代码时,我不知道它是什么类型的对象或属性/字段名称是什么。但是当我使用它时,我将知道属性/字段名称。 我当前的解决方案: 到目前为止,我已经编写了一个简单的包装器类,该包装器类用于获取Bean / POJO的属性并将其公开为。它很粗糙
问题内容: 我正在尝试测试从中获取输入的函数,而我目前正在使用类似以下内容进行测试: 以测试自动化的名义,有什么方法可以伪造输入? 问题答案: 简短的答案是猴子补丁 。 这是一个使用a的简单示例,该示例丢弃提示并返回我们想要的内容。 被测系统 测试用例:
我有以下代码: 我只想模拟这些行,并在,因为我将有多个测试用例,具体取决于行(文件为空,行为空,我只得到一行,我得到几行,等等)。 注意:我使用库访问FTP服务器上的文件,因此方法将作为返回类型,而具有。 我正在使用junit 4.12和mockito 3.1.0 提前感谢!
问题内容: 我正在开发一个Web应用程序,该应用程序显然在iOS设备中存在问题。问题是我不拥有iOS设备,而是在Linux Ubuntu中进行开发。我正在寻找一种在Linux(尤其是浏览器)中仿真/模拟此OS的方法,但是还没有找到任何东西。 到目前为止,我发现的是iOS SDK的Simulator,但这是针对Mac的。还有一些Windows模拟器。有人做过吗? 问题答案: 我能想到的唯一解决方案是