如何使用Mockito验证一个方法是否在另一个方法中被调用?

时间:2018-11-08 19:19:13

标签: java unit-testing junit mockito

我有一个带有publish()方法的类A。在该方法中,将调用另一个方法,并将A类对象作为参数传递给B类。

public class A {
    public void publish() {
      ClassB classb = new ClassB();
      classb.sendRequest(this)
    }
}

问题是,当调用publish()方法时,如何使用Mockito验证sendRequest方法是否被调用?我是Mockito的新手。

1 个答案:

答案 0 :(得分:6)

如果在方法中创建新的ClassB实例,则不能使用Mockito。
您应该重构publish()以将ClassB作为参数,然后可以发送Mockito模拟而不是真实的ClassB,并在其上进行验证。

像这样:

public class A {

    public void publish(ClassB classb){
        classb.sendRequest(this)
    }
 }

在测试中:

ClassB mockClassB = mock(ClassB.class);
A a = new A();
a.publish(mockClassB);

verify(mockClassB, times(1)).sendRequest(any());