java - 在不知道方法调用的参数的情况下使用mockito.when

标签 java junit mockito

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

Mockito.when(emailer.sendEmail(INPUT GOES HERE)).thenReturn(true);

电子邮件发送器的 sendEmail() 方法接受两个参数,但我不确定它们是什么。是否有一种通配符可以用来替换参数而不知道它们是什么?

最佳答案

正如问题评论中提到的。

  • Matchers.any(ClassName.class),这通常就是您想要的。在 Mockito 1.x 中,这代表任何对象,无论其类型如何,但通过接收类,它通常可以避免强制转换的需要。 (根据 Mockito 贡献者 Brice 在 SO comment 中的说法,这种行为将在 Mockito 2 及更高版本中发生变化,大概表现得更像 isA as 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 .

关于java - 在不知道方法调用的参数的情况下使用mockito.when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23142886/

相关文章:

java - Java 中与 (&&) 关系的映射

java - Android 注册安全提供者

java - Mockito 定义 'when' 调用答案

java - 模拟返回带有捕获泛型的迭代器的方法

java - Spring mvc 测试+mockito。 @ModelAttribute 空指针

java - 如何将 Gson TypeAdapter 与 Mockito 模拟的对象一起使用?

java - 如何在JavaFx中移动工具栏中的图像

java - 尝试从在某些标签之间读取的缓冲读取器中提取子字符串

scala - 如何解析 Shippable 上的 SBT 测试报告?

java - jUnit,测试 "new"引用