【发布时间】:2016-07-15 21:47:05
【问题描述】:
我想测试一下这个方法:
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 的实例(或模拟版本)吗? stackoverflow.com/a/26418391/6526330
-
@Dr.Nitpick 我已经尝试返回一个实例,但它不起作用!
-
当你说它不起作用时,实际上会发生什么?
-
如果您的测试的其余部分实际上并未引发异常,请尝试删除
throws Exception
标签: java android mocking mockito