0
我已經在測試類doNothing()不與春嘲笑@Autowired領域
@Autowired
private AbcDAO abcDAO;
自動裝配一個領域工作,並用它這樣
doThrow(new RuntimeException()).when(abcDAO).methodName(xyz);
或
doNothing().when(abcDAO).methodName(xyz);
我在這樣的春季文件中嘲笑了這個DAO課程
<bean id="abcDAO" class="org.mockito.Mockito" factory-method="mock" >
<constructor-arg value="a.b.c.abcDAO" />
</bean>
我得到NotAMockException Argument passed to when() is not a mock.
當我在測試類中使用`@Mock註解這樣
@Mock
private AbcDAO abcDAO;
直接(而非@Autowiring,並在春季嘲諷),它工作正常。
爲什麼發生?
編輯:
好吧,讓我告訴你這樣做的原因。
我們有一個服務X,我想爲'X'的API編寫junits。 Junit的編寫方式是我創建一個客戶端並調用這些API。我不直接調用可以使用@Mock和@Inject mocks的方法。
我不確定是否清楚,但這是在需要在春天文件中嘲笑的用例。
如果你真的有一個很好的理由,爲什麼不使用[springockito](https://bitbucket.org/kubek2k/springockito/wiki/Home)? – Alban
我嘗試了在那裏建議的方法。 <豆ID = 「ClassInstance的」 類= 「java.lang.Class中」 工廠方法= 「的forName」> \t \t <構造精氨酸值= 「ababcDAO」/> \t \t \t <豆ID = 「abcDAO」 類= 「org.mockito.Mockito」 工廠方法= 「模擬」> \t \t <構造精氨酸REF = 「ClassInstance的」/> \t 但是我再次得到同樣的錯誤。 – instanceOfObject
再一次,它沒有建議嘗試這樣做。我會認爲這是一種反模式。否則,請嘗試Alban對spingockito的建議。 –