同一类中的模拟方法称为内部测试方法


 public class MyClass {
   public int result(){
     int result = calculate(new ValueProvider());
          return result;
      }
   public int calculate(ValueProvider provider){
            return provider.getSalary();
      }
}
public class ValueProvider {
    public int getSalary(){
        return 10000000;
    }
}

我需要测试方法result(),但必须模拟第二种方法,该方法应返回默认值。

使用Mockito spy创建部分模拟。

例如:

public class TestMyClass {
    @Test
    public void aTest() {
        MyClass spy = Mockito.spy(MyClass.class);
        // this will cause MyClass.calculate() to return 5 when it 
        // is invoked with *any* instance of ValueProvider
        Mockito.doReturn(5).when(spy).calculate(Mockito.any(ValueProvider.class));
        Assert.assertEquals(123, spy.result());
    }
}

在此测试案例中,calculate上的调用是模拟的,但result上的调用是真实的。从文档中:

您可以创建真实对象的间谍。当您使用间谍时,将调用真实方法(除非方法是固定的)。

相关内容

  • 没有找到相关文章

最新更新