[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).
...
}
meu controlador de base tem uma substituição do Initialize que obtém este requestContext. Estou tentando passar isso adiante, mas não estou fazendo algo certo.
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
}
Onde posso obter mais informações sobre como simular meu RequestContext e HttpContext usando o Moq? Estou tentando simular cookies e o contexto geral.
Crie uma solicitação, uma resposta e coloque ambas em HttpContext:
fonte
Obrigado, usuário 0100110010101.
Funcionou para mim e aqui eu tive um problema ao escrever o caso de teste para o código abaixo:
E aqui estão as linhas que resolveram o problema
Pode ser útil para os outros.
fonte
Aqui está um exemplo de como você pode configurar isso: Mocking HttpContext HttpRequest e HttpResponse para UnitTests (usando Moq)
Observe os métodos de extensão que realmente ajudam a simplificar o uso dessas classes de simulação:
Aqui está um exemplo de como escrever um Teste de Unidade usando moq para verificar se um HttpModule está funcionando conforme o esperado: Teste de Unidade para HttpModule usando Moq para envolver HttpRequest
Update: esta API foi refatorada para
fonte
Veja como usei o ControllerContext para passar um caminho de aplicativo falso:
fonte