我正在测试一个带有预期异常的方法。 我还需要验证在抛出异常后调用了某些代码(在模拟对象上),但是忽略了验证。 这是代码:
public class ExceptionHandler {
@Autowired
private Sender sender;
public void handle(Exception exception) throws Exception {
if (!SomeException.class.isAssignableFrom(exception.getClass())) {
sender.sendMessage(ExceptionUtils.getStackTrace(exception));
}
throw exception;
}
}
这是测试代码:
@Mock
private Sender sender;
@InjectMocks
private ExceptionHandler handler;
@Test
public void testHandler() throws Exception {
SomeException someException = new SomeException();
try {
handler.handle(someException);
} catch (SomeException thrownResult) {
assertEquals(someException, thrownResult);
}
verify(sender, times(1)).sendMessage(Mockito.anyString());
}
答案 0 :(得分:1)
我还需要验证是否调用了某些代码(在模拟对象上) 抛出异常后,但忽略验证。
事实并非如此,此行 实际执行:
verify(sender, times(1)).sendMessage(Mockito.anyString());
但是这个错误无法验证:
通缉但未调用:sender.sendMessage();
< ...>
实际上,这个模拟没有互动。
正如预期的那样,从未调用该方法,因为条件!SomeException.class.isAssignableFrom(exception.getClass())
不满足 - 您使用handler.handle
的实例调用SomeException
。