我正在尝试验证我模拟的对象上是否调用了一个方法:
public class MyClass{
public String someMethod(int arg){
otherMethod();
return "";
}
public void otherMethod(){ }
}
public void testSomething(){
MyClass myClass = Mockito.mock(MyClass.class);
Mockito.when(myClass.someMethod(0)).thenReturn("test");
assertEquals("test", myClass.someMethod(0));
Mockito.verify(myClass).otherMethod(); // This would fail
}
这并不是我的确切代码,但它模拟了我想要做的事情。当尝试验证是否调用了otherMethod()
时,代码将会失败。这正确吗? 我对verify
方法的理解是,它应该检测到存根方法(someMethod
)中调用的任何方法。
希望我的问题和代码清晰易懂。
someMethod
上使用.thenReturn()
并验证是否调用了otherMethod
,该怎么办呢?此外,当模拟一个类时,这样做不会使verify
无效吗? - RyansomeMethod()
的实现将被替换为return“test”;
。通常情况下,您会模拟一个依赖项,即被测试类使用的对象,而不是模拟被测试类本身。然后,您可以验证被测试类是否已调用该依赖项。 - JB NizetsomeMethod()
中的代码,那么你应该模拟那段代码,而不是模拟someMethod()
的调用。 - Anders R. Bystrup