2011-09-03 2 views
0

UnityAutoMoqContainer Here is the Link 을 사용하기 시작했으며 특히 container.GetMock() 호출과 관련하여 아래 2 가지 질문이 있습니다.UnityAutoMoqContainer를 통한 의존성 해결

  1. 아래의 Assert는 성공할 것으로 예상되지만 예외는 발생합니다.

    private UnityAutoMoqContainer container; 
    
    [SetUp] 
    public void SetUp() 
    { 
        container = new UnityAutoMoqContainer(); 
    } 
    
    [Test] 
    public void Are_mocks_Same(){ 
    
        var serviceMock = new Mock<IService>(); 
        var getMock = container.GetMock<IService>();    
        Assert.AreSame(getMock, serviceMock); 
    } 
    

오류 1 개 테스트 'UnityAutoMoq.Tests.UnityAutoMoqContainerFixture.Are_mocks_Same' 실패 예상 : C에서 UnityAutoMoq.Tests.UnityAutoMoqContainerFixture.Are_mocks_Same()에서와 같은 : \ 사용자 ... ....

그렇다면 "예상 됨"과 "그러나 같음"이 같은 경우에도 여전히 예외가 발생합니다.

내가 볼의 차이는) 전자 해결 (GetMock 난을 해결하기 위해 유니티를 사용하는 새로운 모의하지 않는 의존성이다. 그러나 나는 내 자신을이 예외의 원인으로 설명 할 수 없다.

  1. 해결 추상적 인 유형 :

    나는 다음과 같이 추상적 인 형식을 해결하기 위해 Moq.Mock를 사용합니다. "System.Web.HttpContextBase"이름 = "종속성의

     var mock = container.GetMock<HttpContextBase>(); 
    

    해결이 실패 유형 = 다음 UnityAutoMoqContainer에 아래의 호출이 예외를 throw 그러나

    var httpContextBaseMock = new Mock<HttpContextBase>(); 
    

(없음) ". 예외가 발생한 경우 while : 해결하는 동안. 예외는 다음과 같습니다. InvalidOperationException - 유형의 HttpContextBase를 구성 할 수 없습니다. 이 값을 제공하려면 컨테이너를 구성해야합니다.

질문은 왜 용기가 조롱 된 추상적 유형을 반환하는 것을 용이하게하지 못하는 것입니까?

답변

1

AreSame 메서드는 동일한 개체가 두 인수로 참조되는지 테스트합니다. 당신이

var serviceMock = new Mock<IService>(); 
var getMock = container.GetMock<IService>(); 
Assert.AreSame(getMock, serviceMock); 

을 할 때 당신은 다른 개체를 만들고 그들은 같은 기준이 될하지 않습니다. automock 컨테이너가 컨테이너를 사용하지 않고 생성 한 인스턴스에 대해 알 수있는 방법은 없습니다. 그러나 성공할 수 있습니다 :

var mock1 = container.GetMock<IService>(); 
var mock2 = container.GetMock<IService>(); 
Assert.AreSame(mock1, mock2); 

추상 형식에서 모의를 만들 수 없지만 버그는 있지만 지금 수정해야합니다. v2.1.0으로 업데이트하면 예상대로 작동합니다.

희망이 도움이됩니다.

- 토마스