我对 Springockito 不熟悉,但对于一些狭窄的案例来说它看起来很有趣——即带有一点模拟的集成测试。
无论如何,对于扩展AbstractJUnit4SpringContextTests的简单用例,您也可以像在 ClassA 中一样在测试中自动装配 ClassB。然后,您可以在设置方法中定义 ClassB 的预期行为。
但我认为您需要为 ClassB bean 设置一些行为,然后才能在 setup 方法中访问它。在这种情况下,您可能需要另一个 bean 来设置 ClassB 以执行预期的行为。所以你的 testContext.xml 里面会有这样的东西:
<bean id="classA" class="com.jarvis.ClassA" depends-on="classBMockSetter" />
<mockito:mock id="classB" class="com.jarvis.ClassB" />
<bean id="classBMockSetter" class="com.jarvis.test.ClassBMockSetter">
<property name="classB" ref="classB" />
</bean>
ClassBMockSetter 看起来像:
public class ClassBMockSetter {
private ClassB classB;
public void setClassB(ClassB classB) {
this.classB = classB;
given(classB.foo()).willReturn(true);
given(classB.bar()).willReturn(42);
}
}
我认为这会奏效,但到那时,手动编写模拟 ClassB 不是更容易吗?