6

Sono un po 'nuovo all'iniezione di unità e dipendenza. Sto cercando di scrivere un test di unità che va qualcosa come questo:Registrazione di istanze Dynamicnock NUnit in 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... 
} 

Quando questo test viene eseguito, il contenitore genera un ArgumentNullException all'interno del metodo registerInstance con il messaggio Value cannot be null. Parameter name: assignmentValueType.

La linea superiore dello stack la traccia è at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName).

Perché non riesco a registrare un MockInstance con UnityContainer e come posso aggirare questo problema?

+0

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

+0

Hai fatto la tua domanda sul sito Unity Codeplex? http://unity.codeplex.com/ Si potrebbe ottenere una risposta lì. –

risposta

3

Non vedo questo. Sto usando NUnit 2.5.5.10112 e Unity 2.0 (che viene fornito con EntLib, la versione separata non è ancora disponibile).

Aggiornamento: Ho appena controllato con 1.2 e vedo il tuo comportamento. Quindi questo è 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>()); 
     } 
    } 
} 

Potrebbe essere possibile aggiornare a Unity 2.0? Altrimenti cercherò di scavare più a fondo e scoprire cosa sta succedendo davvero. Questa potrebbe essere una limitazione di 1.2.

+0

È ovvio che tu abbia dedicato un po 'di tempo alla tua giornata per indagare su questo. Molte grazie. – Phil