時無效的匹配我想測試一下這個方法:嘲諷
public void some_method(SomeFactory someFactory) {
A a = someFactory.populateWithParameter(parameter1, parameter2, parameter3, parameter4);
a.method_call();
....
}
工廠去這樣
public class SomeFactory(){
// some constructor
public A populateWithParameter(SomeClass1 someClass1, SomeClass2 someClass2, String string, int parameter){
return new A(someClass1, someClass2, string, parameter)
}
}
和測試
public void testSomeMethod() throws Exception {
SomeFactory someFactory = mock(SomeFactory.class);
when(someFactory.populateWithParameter(
any(SomeClass1.class), any(SomeClass2.class),
anyString(), anyInt())).thenReturn(notNull());
mainActivity.some_method(someFactory);
...
}
我得到這個消息
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
4 matchers expected, 1 recorded:
也許這個問題是因爲你正試圖返回一個匹配器在你的thenReturn(notNull())。你可以嘗試返回一個A(或一個模擬版本)的實例嗎? http://stackoverflow.com/a/26418391/6526330 –
@ Dr.Nitpick我已經試圖返回一個實例,但它不工作! – user1611830
當你說它不起作用時,究竟發生了什麼? – jbarat