asp.net – c#如何获取httpResponse.BinaryWrite处理的流
发布时间:2020-12-16 03:22:30 所属栏目:asp.Net 来源:网络整理
导读:我有以下方法在HttpResponse对象中写入流. public HttpResponse ShowPDF(Stream stream) { MemoryStream memoryStream = (MemoryStream) stream; httpResponse.Clear(); httpResponse.Buffer = true; httpResponse.ContentType = "application/pdf"; httpRes
我有以下方法在HttpResponse对象中写入流.
public HttpResponse ShowPDF(Stream stream) { MemoryStream memoryStream = (MemoryStream) stream; httpResponse.Clear(); httpResponse.Buffer = true; httpResponse.ContentType = "application/pdf"; httpResponse.BinaryWrite(memoryStream.ToArray()); httpResponse.End(); return httpResponse; } 为了测试它,我需要恢复处理过的流. 解决方法
我有两个想法……一个是模拟HttpResponse,另一个是模拟Web服务器.
1.模仿HttpResponse 在我知道你使用了哪个模拟框架之前,我写过这个.以下是使用TypeMock测试方法的方法. 这假设您将httpResponse变量传递给方法,更改方法如下: public void ShowPDF(Stream stream,HttpResponse httpResponse) 当然,如果它是Page类的成员,您可以将其更改为将其传递给Page对象上的属性. 这里有一个如何使用假HttpResponse进行测试的示例: internal void TestPDF() { FileStream fileStream = new FileStream("C:deletemeThe Mischievous Nerd's Guide to World Domination.pdf",FileMode.Open); MemoryStream memoryStream = new MemoryStream(); try { memoryStream.SetLength(fileStream.Length); fileStream.Read(memoryStream.GetBuffer(),(int)fileStream.Length); memoryStream.Flush(); fileStream.Close(); byte[] buffer = null; var fakeHttpResponse = Isolate.Fake.Instance<HttpResponse>(Members.ReturnRecursiveFakes); Isolate.WhenCalled(() => fakeHttpResponse.BinaryWrite(null)).DoInstead((context) => { buffer = (byte[])context.Parameters[0]; }); ShowPDF(memoryStream,fakeHttpResponse); if (buffer == null) throw new Exception("It didn't write!"); } finally { memoryStream.Close(); } } 2.模拟Web服务器 也许你可以通过模拟Web服务器来做到这一点.这可能听起来很疯狂,但它看起来并不像是那么多代码.以下是一些关于在IIS之外运行Web窗体的链接. Can I run a ASPX and grep the result without making HTTP request? http://msdn.microsoft.com/en-us/magazine/cc163879.aspx (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 从单控制器操作返回多个部分视图?
- asp.net-web-api – 在WebApi2项目中使用CacheOutput属性时
- asp.net mvc 设置一个action的访问人数,达到上线排队
- asp.net-mvc – 路由到具有相同名称但不同参数的操作
- asp.net-mvc-3 – jQuery.validator.unobtrusive.adapters.
- asp.net-mvc – 使用Sharp Architecture注册自定义模型绑定
- asp.net-mvc – Windows 8 VS2012 IISExpress Windows身份验
- 在ASP.NET MVC中启用了对Javascript的测试
- asp.net-mvc – 在Mvc中验证DateFormat
- asp.net-mvc-3 – OutputCache属性和jQuery Ajax没有缓存