3 Stimmen

Unit-Test einer Asp.net MVC-Controller-Aktion

Ich habe eine Controller-Aktion, die prüft

this.User.Identity.IsAuthenticated

Was schlagen Sie vor, wie man Unit-Test auf eine solche Aktion zu bewältigen?

0 Stimmen

Das ist genau die gleiche Frage: stackoverflow.com/questions/1106398/

0 Stimmen

Danke eugene... habe es vorher nicht gefunden...

5voto

womp Punkte 113535

Ich würde vorschlagen, mocking die IsAuthenticated Eigenschaft. Es gibt eine Reihe von anderen Beiträgen auf SO über diese, Sie könnten eine Suche nach ihnen tun.

Hier ist ein Beispiel für das Mocking der Anfrage mit Moq:

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 vorschlagen, in Scott Hanselman's allgegenwärtige "MvcMockHelpers" Code, das ist, was ich verwenden:

http://www.hanselman.com/blog/ASPNETMVCSessionAtMix08TDDAndMvcMockHelpers.aspx

0 Stimmen

Aber wie würden Sie Ihre mocked HttpContext/Request injizieren? Benutzer-Eigenschaft ist Teil der Controller-Klasse und hat seinen eigenen Code, den ich nicht beeinflussen kann.

0 Stimmen

Nun gut. Jetzt hat Ihr Code die Antwort. Die Eigenschaft ControllerContext war mir nicht bekannt. Danke!

0 Stimmen

In Moq verwenden Sie SetupGet für Mocking-Eigenschaften (Setup ist nur für Mocking-Methoden)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X