java - 这是 Mockito spy 的正确案例吗?

标签 java unit-testing mockito

假设我有一个类

class SomeClass
{
  public void methodA()
  {}

  public void methodB()
  {}

  public void someMethod()
  {
     methodA();
     methodB();
  }
}

我想用 Mockito 测试 someMethod() 的行为。

我能想到的唯一方法是使用 spy();

有点像

SomeClass someClass = spy(new SomeClass());
someClass.someMethod();
InOrder inOrder = inOrder(someClass);
inOrder.verify(someClass).methodA();
inOrder.verify(someClass).methodB();

我是 mockito 的新手,文档说

“真正的 spy 应该谨慎且偶尔使用,例如在处理遗留代码时。”

所以也许我遗漏了一些东西,并且有更好(正确)的方法来验证是否调用了 methodA 和 methodB 而无需在测试用例中显式调用它们。

谢谢。

最佳答案

是的,spy() 适合您的目的。警告是由于调用了真实的方法,因此您可能会得到意想不到的结果(例如 - 从银行账户中提取真钱)

关于java - 这是 Mockito spy 的正确案例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692469/

相关文章:

javascript - 无法在 vue-test-utils 中使用 $route 设置模拟

c++ - 在项目中使用 QT 单元测试 - 冲突的 main(...) 函数

java - 如何为 List 创建一个 ConstraintValidator

java - Jsp扩展页面指令异常: Unable to compile class for JSP:

java - 在测试模式下运行时,Play 框架中的 Mongodb 中没有数据

java - @SpringBootTest(classes = SomeController.class) 和@WebMvcTest(SomeController.class) 的区别

mockito - PowerMocking 静态不返回预期对象

java - 私有(private)方法的 Mockito 参数

Java RGBA 缓冲图像到 GIF 缓冲图像

java - 不显示 EditText 的全部内容