2014-07-23 9 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에 해야하는 시험에서 모의 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(); 
    } 
} 

당신은 당신의 조롱 B 인스턴스를 참조, 테스트에 new A(b)를 호출합니다.

관련 문제