0
我有一个简单的网站,有一个页面。该功能我是单元测试是在单元测试中处理HttpResponse
public void WriteFileToClient(string fileContent, string fileName)
{
StringWriter stringWriter = new StringWriter();
stringWriter.Write(fileContent);
Response.ContentType = "text/plain";
Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.txt", fileName));
Response.Clear();
using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8))
{
writer.Write(stringWriter.ToString());
}
Response.End();
}
当我运行我的测试它说,Response
不可
这里是我的单元测试
[TestMethod]
[TestCategory("Unit")]
public void WriteFileToClient_ShouldSucceedForCorrectInput()
{
//Arrange
Migrate migrate = new Migrate();
Guid g = Guid.Parse("fffe49c1-a838-46bc-b5c6-4e0bbd3e4c32");
string fileContent = migrate.GenerateFlatFileText(g);
string fileName = string.Format("flat file - {0}.txt", g);
//Ask
migrate.WriteFileToClient(fileContent, fileName);
//Assert
migrate.Response.OutputStream.Should().NotBeNull();
migrate.Response.ContentType.Should().Be("text/plain");
migrate.Response.Headers.Should().HaveCount(1);
}
如何嘲笑任何建议响应?老实说,我不明白为什么Response
对象不可用,我Migrate
类继承Page
和我的理解应该有Response
包括
感谢格雷戈里,这是有道理的。在我的单元测试中,我调用的是生活在Web服务器环境中的函数,因为我不在Web服务器环境中,所以失败了。你是否建议模拟依赖关系或者使用'HttpRequest'来测试我的函数? –
在大多数情况下,我使用非常薄的UI位。示例:ASP.NET页面的事件最多只有几行,实际的移动代码位于类中。但是,我不会更深入地写入流的代码,因为它非常关注用户界面。然后,根据您正在测试的内容分离测试类型。如果您正在测试Web UI,则更有可能进行集成测试。合理? –
它的确如此,我想我需要一些时间来围绕它思考 –