[英]How do I test a third party framework when I need to pass in an HttpResponse
我有一個第三方框架,我正在用它寫出一個excel文檔並讓用戶下載。
問題在於用戶正在嘗試導出大量記錄,並且拋出OutOfMemoryException。
我正在嘗試編寫一個測試來驗證這是在第三方框架中而不是在我的代碼中發生的,但是Save方法將HttpResponse對象作為方法之一。
如何獲取/模擬/傳遞任何要傳遞的HttpResponse對象?
使用示例:
excel.Save("test.xls",
OpenType.OpenInExcel,
FileType.Excel2003,
HttpContext.Current.Response);
顯然,HttpContext.Current.Reponse在單元測試中不起作用,因此是我的問題。
.Net 3.5 SP1中的HttpRequestBase是為此目的而設計的,但是除非第三方代碼使用它,否則它不會對您有任何幫助。 (這是直接替代品,因此使用起來並不難)
如果其他代碼未使用它,則可以嘗試將代碼托管在Cassini中並通過HTTP請求。
[免責聲明:我在Typemock工作]
您不需要具有實際的HttpResponse對象,而是使用Isolator創建類型為HttpResponse的偽實例 ,並在調用HttpContext.Current.Response時將其返回:
var fake = Isolate.Fake.Instance<HttpResponse>();
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake);
您可以在假對象上設置屬性,並使用Isolate.WhenCalled更改其行為。
這種方法的優點是您不需要設置復雜的環境,實際上您可以在簡單的單元測試中使用此代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.