c# - 对将 HttpResponse 对象作为参数的方法进行单元测试。输出流不可用

标签 c# asp.net .net unit-testing

我正在尝试为将 HttpResponse 对象作为参数的方法创建单元测试。这样做的正确方法是什么?我希望你们这些经验丰富的单元测试人员可以帮助我。

附加信息: 我尝试通过传入 StringWriter 创建一个伪造的 HttpResponse 对象。

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HttpResponse response = new HttpResponse(sw);
RssGenerator.Generate(response, otherParameters);

测试失败并显示消息:System.Web.HttpException:使用自定义 TextWriter 时 OutputStream 不可用。 被测试的方法是类库 dll 的一部分。它使用 Response 对象的 OutputStream 创建一个带有 XMLWriter 的 RSSFeed。

最佳答案

需要使用命名空间System.Web.Abstractions

特别是,将 HttpResponseBase ( http://msdn.microsoft.com/en-us/library/system.web.httpresponsebase.aspx ) 作为输入参数,而不是 HttpResponse。然后您可以从您的测试中模拟 HttpResponseBase。当你有一个真正的 HttpResponse 要传入时,使用 HttpResponseWrapper 产生一个 HttpResponseBase。

关于c# - 对将 HttpResponse 对象作为参数的方法进行单元测试。输出流不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357554/

相关文章:

c# - 为什么我的代码显然在调用 LocalDataStoreMgr.GetNamedDataSlot?

c# - Entity Framework ALTER TABLE 语句与 FOREIGN KEY 约束冲突

c# - 为什么 System.String 表现得像一个值类型? (如何写string这样的值类型类?)

c# - 在 Telerik RichText 编辑器中保存和另存为

c# - 返回 null 的 Unity c# 脚本引用

php - 将大型经典 ASP 页面迁移到 php?

javascript - 插入登录函数 ASP.NET

c# - Xml 序列化与 "True"和 "False"

c# - DotNetOpenId openIdRelyingParty 设置

c# - 单实例 Windows 窗体应用程序以及如何获取对它的引用?