如何使用构造函数注入来模拟类

如何在Mockito中获取构造函数注入

我有以下课程:

class A{

  private B mB;

  A(B b){
     mB = b;
  }

 void String someMethod(){
     mB.execute();
  }
}

如何使用模拟类A和类B测试someMethod

B b = Mockito.mock(B.class)
Mockito.when(b.execute().thenReturn("String")

A a = Mockito.mock(A.class)
//somehow inject b into A and make the below statement run
Mockito.when(a.someMethod()).check(equals("String"))

解决方法:

您想测试A类的someMethod().测试B类的execute()应该在另一个测试中进行,因为B的实例是您的案例中的依赖项. execute()的测试应该在不同的测试中进行.

您不需要测试B对象的行为方式,因此您需要模拟它,然后检查是否已调用execute().

所以在你的情况下你的测试看起来像这样:

  B b = Mockito.mock(B.class);
  A a = new A( b );
  a.someMethod();
  Mockito.verify( b, Mockito.times( 1 ) ).execute();
上一篇:java – 如何使用不实现`equals`的参数模拟方法调用?


下一篇:java – 如何使用Mockito测试要测试的类中的throws子句