Estoy usando Moq para crear un Mock<HttpResponseBase>
para probar un FileResult
que estoy creando para mi aplicación MVC2.HttpResponseBase.Headers están vacíos al ejecutar la prueba
En el método de la FileResult
WriteFile(HttpResponseBase response)
, tengo el código siguiente al final:
// Write the final output with specific encoding.
response.OutputStream.Write(output, 0, output.Length);
response.AppendHeader("Content-Encoding", encoding);
Se utilizará utf-8
o gzip
dependiendo de la codificación de la cabecera de la petición Accept-Encoding
.
Así que en mi prueba, puedo configurar mi Mock<HttpResponseBase>
así:
var mockResponse = new Mock<HttpResponseBase>();
mockResponse.Setup(r => r.OutputStream).Returns(new MemoryStream());
mockResponse.Setup(r => r.Headers).Returns(new NameValueCollection());
Pero cuando realmente comprobar que la cabecera se ha establecido, Content-Encoding
siempre devuelve un valor nulo:
var response = mockResponse.Object;
Assert.AreEqual("utf-8", response.Headers["Content-Encoding"]);
Lo extraño es que OutputStream obtiene los datos escritos en él y puedo afirmar que está escribiendo el valor correcto.
Lo curioso es que cuando realmente depurar el FileResult
en un proyecto web, la cabecera se envía correctamente.
¿Alguien tiene alguna idea de esto? Puedo proporcionar más código si es necesario.
Puede incluir más código sobre la configuración de Moq. – Ahmad