我觉得这应该是可能的而且不是太困难,但我无法找到类似的情况,我尝试过的任何事情都没有成功。情况如下:
我正在使用cucmber-jvm,spring,Mockito写黄瓜测试。我有三个类(A,B,C),一个是端点(C类),它处理一些数据库调用,最后我会嘲笑,另外两个相互依赖(我很快就会更清楚) )我使用依赖注入而不是setter方法。因此,目标是模拟C类并将其注入B类(简单易用)。现在我想用嵌入式C类模拟得到结果的B类并将其注入A类。这就是我被卡住的地方。
<table border="0" cellpadding="0" cellspacing="0" dir="ltr">
<tr>
<td style="border-top: 1px solid #ffffff;">
content
</td>
</tr>
</table>
所以我有我的基本类,将A和B中的A注入到C中,这在部署中运行良好。我想要做的是如下:
Class A () {
function doStuff() {}
}
Class B () {
@Inject
A a;
function doThingsWithClassA() {}
}
Class C () {
@Inject
B b;
function doThingsWithClassB() {
b.DoThingsWithClassA();
}
}
然后能够进行我的测试。因此,确保当我调用c.doThingWithClassB时,它使用注入的类b,以便在该方法中调用b.doThingsWithClassA时,它会命中模拟对象。这样我就可以简单地使用when(a.doStuff())。thenReturn(Insert_Pre_Populated_Object_Here),然后未模拟的类B和C可以按预期执行它们的功能。
我尝试过以各种方式注入,自动装配(虽然我认为这不合适),并在cucumber.xml中创建bean。
我不想模仿B类,因为这会破坏测试的目的。这个项目的黄瓜需要这些测试。我已经对所有东西进行了单元测试,因此放下黄瓜不是一个选择。
感谢您寻求帮助的任何帮助或指示。