2012-05-13 3 views
1

내가이 서비스가 있다고 가정하자 반환 유형에 불렸다 확인하는 것을 :비웃음 공장 및 방법

public class Service 
{ 
    ... 

    public Service(IFactory factory) 
    { 
     ... 
    } 

    public void Method() 
    { 
     IInsatnce instance1 = factory.CreateInstance(params1); 
     IInstance instance2 = factory.CreateInstance(params2); 

     instance1.CallMethod1(); 
     instance2.CallMethod2(); 
    }  
} 

내가 그 생성 된 인스턴스의 메소드가 호출 된 시험에서 확인하고자합니다. 내가 이해할 수없는 한, 모의 인스턴스를 반환 할 공장의 모의 작품을 만들어야합니다. 그렇다면 Method()에 생성 될 모의 객체에 대한 참조를 유지하고 메서드 호출을 확인하는 데 사용해야합니까? 올바른 접근 방식입니까?

답변

0

꽤 일반적인 사용 사례입니다. 그렇습니다. 조롱 된 공장에서 조롱을 받아야합니다. 그런 다음 그 조롱에 대한 검증을해야합니다. 여기에 구문을 사용 :

IInstance instanceMock1 = mock(IInstance.class); 
IInstance instanceMock2 = mock(IInstance.class); 
IFactory factoryMock = mock(IFactory.class); 

given(factoryMock(params1)).willReturn(instanceMock1); 
given(factoryMock(params2)).willReturn(instanceMock2); 

//... 
verify(instanceMock1).CallMethod1(); 
verify(instanceMock2).CallMethod2();