[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).
...
}
mi controlador base tiene una anulación del Initialize que obtiene este requestContext. Estoy tratando de transmitir esto pero no estoy haciendo algo bien.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
¿Dónde puedo obtener más información sobre cómo burlarme de RequestContext y HttpContext usando Moq? Estoy tratando de burlarme de las cookies y del contexto general.
Cree una solicitud, respuesta y colóquelos en HttpContext:
fuente
Gracias usuario 0100110010101.
Funcionó para mí y aquí tuve un problema al escribir el caso de prueba para el siguiente código:
Y aquí están las líneas que resolvieron el problema.
Podría ser útil para los demás.
fuente
Aquí hay un ejemplo de cómo puede configurar esto: Mocking HttpContext HttpRequest y HttpResponse para UnitTests (usando Moq)
Tenga en cuenta los métodos de extensión que realmente ayudan a simplificar el uso de estas clases de burla:
Aquí hay un ejemplo de cómo escribir una prueba unitaria usando moq para verificar que un HttpModule está funcionando como se esperaba: Prueba unitaria para HttpModule usando Moq para envolver HttpRequest
Actualización: esta API se ha refactorizado a
fuente
Así es como utilicé ControllerContext para pasar una ruta de aplicación falsa:
fuente