尽管doAnswer设置,Spring Mockito bean仍然不执行任何操作

问题描述 投票:0回答:1

我正在尝试对注入的依赖项的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();
}

但是记录和调试表明在运行时没有拦截发生。请问有人知道我在做什么错吗?

spring testing mocking mockito spring-test
1个回答
0
投票

字符串数组的转换似乎比我想象的要难。这有效:

.sendMessage(anyString(), anyString(), any());
© www.soinside.com 2019 - 2024. All rights reserved.