我有一个代码,里面有一个条件,在某些情况下不执行任何操作,如下所示。我想测试该特定方案。
正在测试的代码,返回语句:
public void someTask(){
if(somecondition){
return;
}else if(){
//more work to do
}
}
我到目前为止尝试使用以下方法,但失败了:
@Test
public void testSomeTask(){
when(mock.somecondition()).thenReturn(true);
mock.someTask();
verifyNoMoreInteractions(mock); //fails
verifyZeroInteractions(mock); //fails the above calls this method anyway
}
似乎您正在尝试测试模拟实例的实现。
相反,您应该使用spy
且仅模拟somecondition()
。
然后您需要验证实际的交互。
verify(spy).someTask();
verify(spy).somecondition();
verifyNoMoreInteractions(spy);
verifyZeroInteractions
检查将始终失败,因为与该模拟存在交互。