我正在测试一个类,并且必须创建一些Mockito模拟对象。我感兴趣的代码行是
Mockito.when(emailer.sendEmail(INPUT GOES HERE)).thenReturn(true);
电子邮件的sendEmail()方法有两个参数,我不确定它们是什么。是否有一种外卡可用于替换参数而不知道它们将是什么?
答案 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。