6

Unity와 의존성 삽입에 다소 익숙합니다.UnityContainer에 NUnit DynamicMock 인스턴스 등록하기

이 테스트가 실행
[Test] 
public void Test() 
{ 
    UnityContainer container = new UnityContainer(); 
    DynamicMock myMock = new DynamicMock(typeof(IMyInterface)); 
    container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here 

    // Continue unit test... 
} 

는, 컨테이너가 메시지 Value cannot be null. Parameter name: assignmentValueType.

스택의 맨 위 행으로 RegisterInstance 방법 내부의 경우 ArgumentNullException 예외 : 나는 이런 식 단위 테스트를 작성하려고 해요 추적은 at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName)입니다.

MockInstance를 UnityContainer에 등록 할 수없는 이유는 무엇입니까?이 문제를 해결하려면 어떻게해야합니까?

+0

관련 항목 : http://stackoverflow.com/questions/2098937/proper-way-to-mock-repository-objects-for-unit-tests-using-moq-and-unity/2102104 –

+0

질문하셨습니까? Unity Codeplex 사이트에 있습니까? http://unity.codeplex.com/ 거기에 대한 답변을 얻을 수 있습니다. –

답변

3

나는 이것을 볼 수 없다. NUnit 2.5.5.10112Unity 2.0 (EntLib과 함께 제공되며 별도의 릴리스는 아직 제공되지 않음)을 사용하고 있습니다.

업데이트 : 방금 ​​1.2로 확인했는데 귀하의 행동을 봅니다. 따라서 1.2 문제입니다.

namespace UnityRepro 
{ 
    public interface IMyInterface 
    { 
     void Foo(); 
    } 

    public class Class1 
    { 
     [Fact] 
     public void Test() 
     { 
      UnityContainer container = new UnityContainer(); 
      DynamicMock myMock = new DynamicMock(typeof(IMyInterface)); 
      container.RegisterInstance(typeof(IMyInterface), myMock.MockInstance); //Error here 

      Assert.NotNull(container.Resolve<IMyInterface>()); 
     } 
    } 
} 

Unity 2.0으로 업데이트 할 수 있습니까? 그렇지 않다면 나는 더 깊이 파고보고 실제로 일어나고있는 것이 무엇인지 찾아 낼 것입니다. 이것은 1.2의 제한 일 수 있습니다.

+0

이 문제를 조사하기 위해 하루 종일 시간을 낭비 했음은 분명합니다. 고마워. – Phil

관련 문제