Unit Testing mit Ninject in MVC 4

8

Ich habe eine Lösung namens MvcContacts mit einem MVC 4-Projekt mit dem Namen MvcContacts und einem Unit-Testprojekt mit dem Namen MvcContacts.Test (automatisch erstellt, wenn Ich habe das Kontrollkästchen "Einheitenprüfung aktivieren" in Visual Studio aktiviert.

Ich habe das Ninject.MVC NuGet-Paket in MvcContacts (dem MVC-Projekt) installiert.

Ich folgte diesem Tutorial und ich habe alles eingerichtet, ohne Fehler und es sollte gut funktionieren; Allerdings hat mein Unit-Testprojekt MvcContacts.Test Fehler wie folgt:

  

'MvcContacts.Controllers.HomeController' enthält kein a   Konstruktor, der 0 Argumente akzeptiert

Das ist mein HomeController :

%Vor%

Das ist mein HomeControllerTest :

%Vor%

Wie kann ich mein Unit-Test-Projekt mit Ninject arbeiten lassen?

    
user1477388 13.09.2013, 17:35
quelle

1 Antwort

10

Sie müssen in Ihrem Komponententest eine Instanz von Logging.ILogger an Ihren Konstruktor übergeben. Sie können entweder eine Instanz eines Typs neu erstellen, die Logging.ILogger implementiert, oder Sie können eine Bibliothek wie Moq erstellen eine Scheininstanz:

%Vor%

Alternativ können Sie Ihrem HomeController einen Standardkonstruktor hinzufügen:

%Vor%

Bearbeiten

Wenn Sie Ihr Ninject Kernel in Ihren Tests verwenden möchten, können Sie das tun, aber ich denke, es wäre für diesen einfachen Fall zu viel.

%Vor%

Sie können auch die MockingKernel Erweiterung für Ninject verwenden, wenn Sie eine wirklich magische Injektion wünschen, aber das ist fast so sicherlich übertrieben für diese Situation.

    
Steve Ruble 13.09.2013, 18:36
quelle