6

Soy un poco nuevo en Unity y en la inyección de dependencias. Estoy tratando de escribir una prueba de unidad que va más o menos así:Registro de instancias de NUnit DynamicMock en UnityContainer

[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... 
} 

Cuando esta prueba se ejecuta, el contenedor lanza una ArgumentNullException dentro del método registerInstance con el mensaje Value cannot be null. Parameter name: assignmentValueType.

La línea superior de la pila trace es at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName).

¿Por qué no puedo registrar una MockInstance con UnityContainer, y cómo puedo solucionar esto?

+0

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

+0

Ha hecho su pregunta en el sitio Unity Codeplex? http://unity.codeplex.com/ Es posible que obtenga una respuesta allí. –

Respuesta

3

No estoy viendo esto. Estoy usando NUnit 2.5.5.10112 y Unity 2.0 (que se envía con EntLib, la versión separada no está disponible por el momento).

Actualización: Acabo de verificar con 1.2 y veo su comportamiento. Entonces este es un problema con 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>()); 
     } 
    } 
} 

¿Sería posible actualizar a Unity 2.0? Si no, intentaré ahondar más y descubriré qué está pasando realmente. Esto puede ser una limitación de 1.2 embargo.

+0

Es obvio que tomó algo de tiempo fuera de su día para investigar esto. Muchas gracias. – Phil