Я использую Moq для создания Mock<HttpResponseBase>
для тестирования FileResult
Я создаю для своего приложения MVC2.HttpResponseBase.Headers пусты при запуске теста
В WriteFile(HttpResponseBase response)
способе FileResult
, у меня есть следующий код в конце:
// Write the final output with specific encoding.
response.OutputStream.Write(output, 0, output.Length);
response.AppendHeader("Content-Encoding", encoding);
Он будет использовать utf-8
или gzip
в зависимости от кодировки от Accept-Encoding
заголовка запроса.
Итак, в моем тесте, я настроить мой Mock<HttpResponseBase>
так:
var mockResponse = new Mock<HttpResponseBase>();
mockResponse.Setup(r => r.OutputStream).Returns(new MemoryStream());
mockResponse.Setup(r => r.Headers).Returns(new NameValueCollection());
Но когда я на самом деле проверить, что заголовок был установлен, Content-Encoding
всегда возвращает нулевое значение:
var response = mockResponse.Object;
Assert.AreEqual("utf-8", response.Headers["Content-Encoding"]);
Странно то, что OutputStream получает данные, записанные на него, и могу утверждать, что он пишет правильное значение.
Странно, что когда я действительно отлаживаю FileResult
в веб-проекте, заголовок отправляется правильно.
У кого-нибудь есть понимание? При необходимости я могу предоставить больше кода.
Можете ли вы добавить больше кода относительно установки Moq. – Ahmad