以HttpResponse对象作为参数的方法的单元测试.OutputStream不可用

Jam*_*ruk 8 .net c# asp.net unit-testing

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

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

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HttpResponse response = new HttpResponse(sw);
RssGenerator.Generate(response, otherParameters);
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*man 12

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

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

  • 我花了一段时间才找到它,所以这里是:HttpResponseWrapper wrapper = new HttpResponseWrapper(this.Response); 是如何做你所描述的.HttpResponseWrapper扩展了HttpResponseBase. (3认同)