如何使用另一个内部的类的模拟对JUNIT测试用于捕获参数的void方法?

时间:2019-01-09 09:41:20

标签: unit-testing junit mocking mockito

这里我有一个正在实现User的类A。

method1

我想捕获传递给class A{ public void method1(String name){ classB b = new classB(); // Some operations b.method2(argument1); } } 的参数,为此我编写了以下代码。

我得到了错误,因为当我确认捕获以下代码中的参数时未调用模拟程序。请让我知道如何通过调用模拟来捕获传递给method2

的参数来成功执行此操作
method2

1 个答案:

答案 0 :(得分:0)

Class B必须是Class A的依赖项,您才能正确模拟它。或者它可以是一个参数。

Class A{
 public final B b;
 public A(B b){
  this.b = b
 }
 public void method1(String name){
  // Some operations
  b.method2(argument1); 
 }
}

然后在实例化class A

时在测试中通过模拟
class ATest{
    private B b;
    private A a;
    @Before
    public void setup{
     b = Mockito.mock(B.class);
     a = new A(b);
    }
    // tests...
}