2014-07-23 55 views
0

我是Mockito和单元测试的新手,因此这里有一个基本问题。鉴于此等级: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(); 

谢谢!

回答

2

这将无法正常工作,因为您测试中的b与您A类中的b不同。

还要记住,你不应该嘲笑你的课堂。我写了一个总结in another answer,但我只想说,你应该使用真正 A和测试一个模拟 B中的应该测试A.

您可以将您的更换乙实例这种方式,例如:

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)在您的测试,指的是你的嘲笑乙实例。

相关问题