如何测试第三方框架时,我需要在一个HttpResponse传递
-
20-09-2019 - |
题
我有我使用写出来的Excel文档第三方框架,并让用户下载。
的问题是,用户试图导出大量的记录,并且它投掷一个OutOfMemoryException。
我试图写一个测试来验证,这是在第三方框架,而不是在我的代码发生,但保存方法接受一个HttpResponse对象的方法之一。
我如何获得/模拟/任何一个HttpResponse对象传递?
实施例使用:
excel.Save("test.xls",
OpenType.OpenInExcel,
FileType.Excel2003,
HttpContext.Current.Response);
显然HttpContext.Current.Reponse不会在单元测试工作,因此我的问题。
解决方案
[声明:我在Typemock工作]
您不需要有一个实际的HttpResponse对象,而不是使用隔离来创建一个假实例强>类型的的HttpResponse 并将其返回时被调用的 HttpContext.Current.Response :
var fake = Isolate.Fake.Instance<HttpResponse>();
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake);
您可以假冒对象上设置属性,并改变它使用的行为的 Isolate.WhenCalled 的。
这种方法的优点是你不需要设置一个复杂的环境,其实你可以用一个简单的单元测试这里面的代码。
其他提示
从.net 3.5 SP1的 HttpRequestBase 是专为这一目的,但除非第三方代码使用它,它不会对你有任何好处。 (这是一个简易替换,所以它不是很难使用)
如果其他代码不使用它,你可以尝试托管代码中卡西尼并请求它通过HTTP。
不隶属于 StackOverflow