ich eine Controller-Aktion, die überprüftUnit-Tests eine Asp.net MVC-Controller Aktion
this.User.Identity.IsAuthenticated
Was schlagen Sie vor, wie Unit-Test auf eine solche Aktion in Angriff zu nehmen?
ich eine Controller-Aktion, die überprüftUnit-Tests eine Asp.net MVC-Controller Aktion
this.User.Identity.IsAuthenticated
Was schlagen Sie vor, wie Unit-Test auf eine solche Aktion in Angriff zu nehmen?
Ich würde vorschlagen, die IsAuthenticated-Eigenschaft zu verspotten. Es gibt eine Reihe von anderen Posts über SO, Sie könnten nach ihnen suchen. Hier
ist ein Beispiel für die Anfrage spöttischen Moq mit:
var mockRequest = new Mock<HttpRequestBase>();
mockRequest.Setup(x => x.IsAuthenticated).Returns(true);
var mockContext = new Mock<ControllerContext>();
mockContext.Setup(x => x.Request).Returns(mockRequest.Object);
var myController = new MyController();
myController.ControllerContext = new ControllerContext(mockContext.Object, new RouteData(), myController);
Ich würde sehr in Scott Hanselman allgegenwärtig "MvcMockHelpers" Code empfehlen suchen, das ist, was ich benutze:
http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx
Aber h Würdest du deinen verspotteten HttpContext/Request injizieren? Die Benutzereigenschaft ist Teil der Controller-Klasse und hat ihren eigenen Code, den ich nicht beeinflussen kann. –
Ok. Jetzt hat dein Code die Antwort. Die ControllerContext-Eigenschaft, die mir nicht bekannt war. Vielen Dank. –
In Moq verwenden Sie SetupGet für Mocking-Eigenschaften (Setup ist nur für Mock Methoden) –
Genau die gleiche Frage: http://stackoverflow.com/questions/1106398/how-to-unit-test-an-mvc-controller-action-which-depend-on-authentification-in-c –
danke eugene ... habe es vorher nicht gefunden ... –