2016-09-01 1 views
1

내 조롱 된 객체가 "획득"되었다고 주장하는 방법이 있습니까? 내 조롱 개체가 "받은"것을 주장 할 수있는 방법이 있나요모의 객체가 "획득"되었는지 확인하는 방법은 무엇입니까?

var mock = new Mock<IValidationDict>(); 
var sut = new Car(IValidationDict.Object); 

: 내 단위 테스트에서

public class Car 
{ 
    private readonly IValidationDict _validationDict; 
    public Car(IValidationDict validationDict) 
    { 
     _validationDict = validationDict; 
    } 

    public void Go() 
    { 
     var myValidation = _validationDict; //I would like to assert that _validationDict was indeed assigned to another variable or "gotten" 
    } 
} 

내가 좋아하는 뭔가를 할 것이다?

+0

나머지 메소드에서 'myValidation'은 어떻게됩니까? 아마도 그것은 모의의 일부 구성원을 불러내어 그렇게 주장 할 수 있어야합니다. – Lee

+0

@Lee wouldnt는 고전적인 단위 테스트가 아닌 일을하는 다른 일에 달려 있습니까? –

+0

나는 '작동하는 다른 것에 의존한다'는 것이 무슨 뜻인지 잘 모르겠지만'이동 '은 무효화 된 방법이므로 부작용으로 만 실행합니다. 테스트에 모의 답변을 제공하기 때문에 모의에 대한 기대를 통해 그러한 효과를 주장합니다. 'Go' 메소드 내에서 어떻게 일어 났는지에 대한 세부 사항은 테스트와 무관해야합니다. – Lee

답변

2

아니요, 모의 개체가 할당의 일부로 사용되었는지 확인할 방법이 없습니다. myValidation의 할당은 Moq 프레임 워크 범위 밖에서 발생하므로 Moq은이를 추적하기 위해 어떤 차단도 수행 할 수 없습니다.

@Lee 상태와 마찬가지로 myValidation이 다른 곳에서 사용되고 그 변수 (조롱 된 인스턴스가 될 것임)의 사용을 확인할 수 있다는 가정이 있습니다.

당신의 모의가 (GetValidation 같은) 유효성 검사 사전을 획득 한 다음 Car에 조롱 공장을 전달하고 있는지 확인하는 방법을 가지고 공장 클래스를 생성하는 것입니다 액세스 한 경우 알고해야하는 경우 하나의 대안 공장에서 GetValidation 메쏘드가 호출되었습니다.

관련 문제