使用mockito.when而不知道方法调用的参数

时间:2014-04-17 20:31:58

标签: java junit mockito

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

Mockito.when(emailer.sendEmail(INPUT GOES HERE)).thenReturn(true);
电子邮件的sendEmail()方法有两个参数,我不确定它们是什么。是否有一种外卡可用于替换参数而不知道它们将是什么?

1 个答案:

答案 0 :(得分:4)

如问题评论中所述。

  • Matchers.any(ClassName.class),这通常是你想要的。在Mockito 1.x中,它代表任何对象,无论其类型如何,但通过接收类,它通常将避免需要演员。 (根据Mockito撰稿人Brice在SO comment中,此行为将在Mockito 2及更高版本中发生变化,可能会更像isA,而any(MyClass.class)会建议使用英语。 )
  • Matchers.any(),通常需要演员表,对于原语来说不是一个好主意。
  • Matchers.anyInt()Matchers.anyShort()(等),它们适用于原语。
  • Matchers.anyString(),因为字符串是一个常见的用例。

由于Mockito扩展了Matchers,因此大多数这些方法都可以在Mockito上使用,但是有些IDE无法在子类中查找静态方法。您可以使用import static org.mockito.Matchers.*;找到所有这些内容。

org.mockito.Matchers documentation了解有关您可以使用的所有匹配器的详情。

如果您遇到麻烦,或想了解更多有关这些通配符如何在表面下工作的信息,read more here