在另一个方法中调用一个方法



我是Mockito和单元测试的新手,所以这里有一个基本的问题。给定这个类:

public class A{
  private B b;
  public A(){
    b = new B();
  }
  private void test(){
    b.some_other_method();
  }
}

这不会成功地在链上存根吗?

a = Mockito.mock(A.class);
b = Mockito.mock(B.class);
Mockito.when(b.some_other_method()).thenReturn("testing");
a.test();

谢谢!

这将不起作用,因为测试中的b与a类中的b是不同的实例。

还要记住,在测试中不应该嘲弄类。我在另一个答案中写了一个总结,但足以说明您应该在应该测试a的测试中使用真实 a和模拟 B。

你可以这样插入你的B实例,例如:

public class A{
  private B b;
  public A(){
    b = new B();
  }
  /** Package private constructor used for testing. */
  A(B b){
    this.b = b;
  }
  private void test(){
    b.some_other_method();
  }
}

此时,您只需在测试中调用new A(b),参考您的模拟B实例。

相关内容

  • 没有找到相关文章

最新更新