[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).
...
}
mój kontroler podstawowy ma nadpisanie właściwości Initialize, które pobierają ten requestContext. Próbuję to przekazać, ale nie robię czegoś dobrze.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Gdzie mogę uzyskać więcej informacji na temat mockowania mojego RequestContext i HttpContext przy użyciu Moq? Próbuję kpić z ciasteczek i ogólnego kontekstu.
Utwórz żądanie, odpowiedz i umieść je oba w HttpContext:
źródło
Dzięki użytkowniku 0100110010101.
U mnie zadziałało i tutaj miałem problem podczas pisania testu case dla poniższego kodu:
A oto kwestie, które rozwiązały problem
Może być pomocny dla innych.
źródło
Oto jak użyłem ControllerContext do przekazania fałszywej ścieżki do aplikacji:
źródło
Oto przykład, jak możesz to ustawić: Mocking HttpContext HttpRequest i HttpResponse for UnitTests (using Moq)
Zwróć uwagę na metody rozszerzające, które naprawdę pomagają uprościć użycie tych szyderczych klas:
Oto przykład, jak napisać test jednostkowy przy użyciu moq, aby sprawdzić, czy HttpModule działa zgodnie z oczekiwaniami: Test jednostkowy dla HttpModule przy użyciu Moq do zawijania HttpRequest
Aktualizacja: ten interfejs API został zmieniony na
źródło