Ich habe gerade angefangen zu lernen und usingASP.NET MVC 2 und auch immer mehr in Unit-Test mein Code beteiligt. Meine Frage ist weitgehend, wie man ein Benutzer-Login simuliert, indem ich die Zugangsdaten innerhalb meines Tests übergebe.Wie fälsche ich einen Benutzer anmelden für Unit-Testzwecke mit fakeiteinasy innerhalb von asp.net mvc 2
Ich benutze MSpec und versuche, meinen Kopf um fakeiteasy zu bekommen, um meinen Test zu schreiben. Bisher glaube ich, dass ich einen Test korrekt geschrieben habe (Er besteht die Testbedingung), wenn ein nicht authentifizierter Benutzer versucht, auf eine Seite zuzugreifen.
Subject(typeof(HomeController))]
public class context_for_a_home_controller_for_not_logged_user
{
protected static HomeController HomeController;
Establish context =() =>
{
// Create controller
HomeController = new HomeController();
HomeController.ControllerContext = A.Fake<ControllerContext>();
};
}
[Subject(typeof(HomeController))]
public class when_the_home_page_is_requested : context_for_a_home_controller_for_not_logged_user
{
static ActionResult result;
Because of =() =>
result = HomeController.Index();
It should_return_the_log_in_page_if_user_not_logged_in =() =>
{ result.ShouldBeAView().And().ShouldUseDefaultView(); };
}
So weit so gut. Ich möchte jedoch auf das Szenario testen, in dem ein authentifizierter Benutzer den Home Controller trifft. Ich bin fest, wie man einen authentifizierten Benutzer simuliert und jede Hilfe oder Beratung wäre willkommen.
TIA,
David
Hallo Danke, danke für das Posten dieser Antwort. Leider die Zeile A.CallTo (() => HomeController.User) .Returns (fakePrincipal); verursacht Fehler, weil HomeController das zu testende Objekt ist und kein falsches Objekt ist. Hättest du weitere Vorschläge, um den Code zu erhalten? – DavidS
Ja, Sie haben Recht. Ich habe meinen Code aktualisiert. –
Das funktioniert auch! – DavidS