[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
context
.Setup(c => c.Request)
.Returns(request.Object);
HomeController controller = new HomeController();
controller.HttpContext = context; //Here I am getting an error (read only).
...
}
Mein Basis-Controller hat eine Überschreibung der Initialisierung, die diesen requestContext erhält. Ich versuche das weiterzugeben, aber ich mache etwas nicht richtig.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Wo kann ich weitere Informationen zum Verspotten meines RequestContext und HttpContext mit Moq erhalten? Ich versuche, Cookies und den allgemeinen Kontext zu verspotten.
Erstellen Sie eine Anfrage, eine Antwort und fügen Sie beide in HttpContext ein:
quelle
Vielen Dank Benutzer 0100110010101.
Es hat bei mir funktioniert und hier hatte ich ein Problem beim Schreiben des Testfalls für den folgenden Code:
Und hier sind die Zeilen, die das Problem gelöst haben
Könnte für die anderen hilfreich sein.
quelle
Hier ist ein Beispiel, wie Sie dies einrichten können: Verspotten von HttpContext HttpRequest und HttpResponse für UnitTests (mit Moq)
Beachten Sie die Erweiterungsmethoden, die wirklich dazu beitragen, die Verwendung dieser Spottklassen zu vereinfachen:
Hier ist ein Beispiel, wie Sie einen Unit-Test mit moq schreiben, um zu überprüfen, ob ein HttpModule wie erwartet funktioniert: Unit-Test für HttpModule mit Moq zum Umschließen von HttpRequest
Update: Diese API wurde überarbeitet
quelle
So habe ich den ControllerContext verwendet, um einen gefälschten Anwendungspfad zu übergeben:
quelle