如果我有一个对象MyObject,我想在调用该对象的某个方法时返回一些值。例如像这样:
doReturn(someValue).when(Mockito.any(MyObject.class)).getSomeValue();
我已经尝试过了,但它不起作用:
org.mockito.exceptions.misusing.NullInsteadOfMockException:
Argument passed to when() is null!
您需要使用 Mockito.mock(MyObject.class)
来创建对象的模拟。
目前,您正在使用 Mockito#any,它是一个参数匹配器,用于在为任何给定参数调用存根方法时定义模拟上的行为。
@Test
public void testMock() throws InterruptedException {
MyObject myObjectMock = Mockito.mock(MyObject.class);
doReturn(2).when(myObjectMock).getSomeValue();
System.out.println(myObjectMock.getSomeValue()); // prints 2
}
private class MyObject {
public int getSomeValue() {
return 1;
}
}
或者,您可以使用 Mockito 注释:
@RunWith(MockitoJUnitRunner.class)
public class YourTestClass {
@Mock
MyObject myObjectMock
避免在设置或测试方法中手动模拟该对象。