如果调用具有某个类的对象的方法,则Mockito doReturn

时间:2017-01-26 07:57:28

标签: java unit-testing spring-boot junit mockito

如果我有一个对象MyObject,我想在调用该对象的某个方法时返回一些值。例如:

org.mockito.exceptions.misusing.NullInsteadOfMockException: 
Argument passed to when() is null!

我已经尝试过这样,但它不起作用:

for i, x in df.iterrows():
    for index, row in df1.iterrows():
        if x['ip_address']<=row['upper_bound_ip_address'] and x['ip_address']>=row['lower_bound_ip_address']:
            df.ix[i, 'country']=row['country']

2 个答案:

答案 0 :(得分:6)

您需要使用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;
    }
}

答案 1 :(得分:1)

或者,您可以使用Mockito注释:

@RunWith(MockitoJUnitRunner.class)
public class YourTestClass {
  @Mock 
  MyObject myObjectMock

使您无需在设置或测试方法中手动模拟该对象。