我對Springockito並不熟悉,但它對於一些狹隘的情況看起來很有趣 - 即集成測試和嘲諷只是一點點。
無論如何,它看起來像是一個簡單的使用案例,您可以擴展AbstractJUnit4SpringContextTests,您也可以在您的測試中自動裝入ClassB,就像在ClassA中一樣。然後,您可以在您的設置方法中爲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?
謝謝,那就是我正在尋找的。當你說手工編寫代碼時,代碼將在哪裏生存,因爲當ClassA在ClassATest中實例化時以及post構造方法被調用之前它需要被使用。 – JPL