在不知道方法调用参数的情况下使用嘲笑

Ser*_*rge 0 java junit mockito

我正在Junit测试一个类,并且不得不创建一些Mockito模拟对象。我感兴趣的代码行是

Mockito.when(emailer.sendEmail(INPUT GOES HERE)).thenReturn(true);
Run Code Online (Sandbox Code Playgroud)

emailer的sendEmail()方法有两个参数,我不确定它们是什么。是否有某种通配符可用于替换参数而不知道它们将是什么?

Jef*_*ica 5

如问题评论中所述。

  • Matchers.any(ClassName.class),这通常是您想要的。在Mockito 1.x中,它代表任何对象,而不管其类型如何,但是通过接收一个类,它通常可以避免进行强制转换。(根据贡献的Mockito 布赖斯在SO 评论,这种行为将在2的Mockito及以后的变化,大概是为了表现更像isAany(MyClass.class)在英语建议。)
  • Matchers.any(),这通常需要强制转换,对于图元不是一个好主意。
  • Matchers.anyInt()Matchers.anyShort()(等),这对于基元很有用。
  • Matchers.anyString(),因为字符串是常见的用例。

由于可Mockito扩展Matchers,这些方法大多数将在上可用Mockito,但是某些IDE难以在子类之间找到静态方法。您可以使用找到所有它们import static org.mockito.Matchers.*;

org.mockito.Matchers文档中了解有关所有可用匹配器的更多信息

如果您遇到麻烦,或者想了解更多有关这些通配符如何在表面下工作的信息,请在此处阅读更多内容