6

Je suis un peu nouveau dans Unity et l'injection de dépendances. Je suis en train d'écrire un test unitaire qui va quelque chose comme ceci:Enregistrement d'instances NUnit DynamicMock dans un 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... 
} 

Lorsque ce test exécute, le conteneur déclenche une ArgumentNullException dans la méthode de RegisterInstance avec le message Value cannot be null. Parameter name: assignmentValueType.

La ligne supérieure de la pile trace est at Microsoft.Practices.Unity.Utility.Guard.TypeIsAssignable(Type assignmentTargetType, Type assignmentValueType, String argumentName). Pourquoi ne puis-je pas enregistrer un objet MockInstance avec UnityContainer et comment puis-je contourner ce problème?

+0

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

+0

Avez-vous posé votre question sur le site Unplex Codeplex? http://unity.codeplex.com/ Vous pourriez obtenir une réponse là-bas. –

Répondre

3

Je ne vois pas ça. J'utilise NUnit 2.5.5.10112 et Unity 2.0 (qui est livré avec EntLib, la version séparée n'est pas encore disponible).

Mise à jour: Je viens de vérifier avec 1.2 et je vois votre comportement. Donc c'est un problème avec 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>()); 
     } 
    } 
} 

Serait-il possible de mettre à jour vers Unity 2.0? Si non, je vais essayer de creuser plus profondément et de découvrir ce qui se passe vraiment. Cela peut être une limitation de 1,2 si.

+0

Il est évident que vous avez pris un peu de temps hors de votre journée pour enquêter. Merci beaucoup. – Phil