如何在另一个类中使用一个类的模拟来JUNIT测试用于捕获参数的void方法



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

class A{
    public void method1(String name){
        classB b = new classB();
        // Some operations
        b.method2(argument1); 
    }
}

我想捕获传递给method2的参数,我为其编写了以下代码。

我收到了错误,因为当我验证以捕获以下代码中的参数时,没有调用模拟。请让我知道如何通过调用模拟来捕获传递给method2的参数来成功执行此操作

class ATest{
    String name = "name";
    @Before
    public void setup{
        class A = new class A();
        class B = Mockito.mock(classB.class);
    }
    public void testmethod1()
    {
        A.method1(name);
        ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
        Mockito.verify(B, Mockito.times(1)).method2(captor.capture());
        String actual = captor.getValue();
        assertEquals("some data", actual);        
    }
}

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...
}

相关内容

  • 没有找到相关文章

最新更新