我正在使用Moq创建Mock<HttpResponseBase>
来测试我为我的MVC2应用程序创建的FileResult
。HttpResponseBase.Headers在运行测试时为空
在FileResult
的WriteFile(HttpResponseBase response)
方法,我有在端部下面的代码:
// Write the final output with specific encoding.
response.OutputStream.Write(output, 0, output.Length);
response.AppendHeader("Content-Encoding", encoding);
它将使用根据从所述请求的首部Accept-Encoding
编码utf-8
或gzip
。
所以后来在我的测试,我安装我的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
总是返回null:
var response = mockResponse.Object;
Assert.AreEqual("utf-8", response.Headers["Content-Encoding"]);
奇怪的是OutputStream获取写入的数据,我可以断言它正在写入正确的值。
奇怪的是,当我在Web项目中实际调试FileResult
时,标头已正确发送。
有没有人有这方面的一些见解?如有必要,我可以提供更多代码。
您可以包含更多关于Moq设置的代码。 – Ahmad 2010-11-01 08:03:41