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
:
Das ist mein HomeControllerTest
:
Wie kann ich mein Unit-Test-Projekt mit Ninject arbeiten lassen?
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:
Alternativ können Sie Ihrem HomeController
einen Standardkonstruktor hinzufügen:
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.
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.
Tags und Links c# unit-testing asp.net-mvc-4 ninject ninject.web.mvc