我正在尝试对注入的依赖项的void方法进行存根:
@Autowired
private FeedbackService service;
@MockBean
private MailSender sender;
@Test
public void testMonitor() {
// mocking MailSender#sendMessage
Mockito.doAnswer(invocation -> {
log.info("SUBJECT: {}", invocation.getArgument(0, String.class));
log.info("CONTENT: {}", invocation.getArgument(1, String.class));
for (String dest : (String[]) invocation.getArgument(2)) {
log.info("DEST: {}", dest);
}
return null; // Void anyway
}).when(sender).sendMessage(anyString(), anyString(), any(String[].class)); //FIXME still doNothing
// invoking the service which calls MailSender#sendMessage
service.monitor();
}
但是记录和调试表明在运行时没有拦截发生。请问有人知道我在做什么错吗?
字符串数组的转换似乎比我想象的要难。这有效:
.sendMessage(anyString(), anyString(), any());