Class MyClass{
method3(){
if(condition){
method1()
}
else{
method2()
}
}
method1(){
//do woo
}
method3(){
//do foo
}
}
我只是在调用case时尝试测试method3
,所以不调用else方法。
MyClass myClassMock= mock(MyClass.class);
myClassMock.method3();
verify( myClassMock, times(0)).method2();
但是这会调用我的method2
并在method2
内抛出空指针。如何在不调用method2
的情况下对此进行测试,因为我的行为不会调用method2
。
答案 0 :(得分:1)
如果您不关心从method2
返回的内容,您也可以模拟该方法:
when(mock.method2(anyString())).thenAnswer("anything");
您可以替换anyString
并使用以下内容:
when(mock.method2(any(MyClass.class))).thenReturn(anInstanceOfMyClass);
或
verify(mock, never()).method2();
或
when(mock.method2()).thenReturn(instanceOfProperClass);