1

Excel ドキュメントを書き出してユーザーにダウンロードさせるために使用しているサードパーティのフレームワークがあります。

問題は、ユーザーが大量のレコードをエクスポートしようとしていて、OutOfMemoryException をスローしていることです。

これが私のコードではなくサードパーティのフレームワークで発生していることを確認するテストを作成しようとしていますが、Save メソッドは HttpResponse オブジェクトをメソッドの 1 つとして受け取ります。

HttpResponse オブジェクトを取得/モック/渡すにはどうすればよいですか?

使用例:

excel.Save("test.xls", 
    OpenType.OpenInExcel, 
    FileType.Excel2003,
    HttpContext.Current.Response);

明らかに HttpContext.Current.Reponse は単体テストでは機能しないため、私の問題です。

4

2 に答える 2

2

.Net 3.5 SP1のHttpRequestBaseはこの目的のために設計されていますが、サードパーティのコードが使用しない限り、何の役にも立ちません。(差し替えなので使いづらさはありません)

他のコードで使用されていない場合は、Cassiniでコードをホストし、 HTTP 経由でリクエストすることができます。

于 2009-10-09T16:05:37.017 に答える
1

[免責事項: Typemock で働いています]

実際の HttpResponse オブジェクトを用意する必要はありません。代わりにIsolatorを使用してHttpResponse型の偽のインスタンスを作成し、HttpContext.Current.Responseが呼び出されたときにそれを返します。

var fake = Isolate.Fake.Instance<HttpResponse>();
Isolate.WhenCalled(() => HttpContext.Current.Response).WillReturn(fake);

Isolate.WhenCalledを使用して、偽のオブジェクトにプロパティを設定し、その動作を変更できます。

このアプローチのメリットは、複雑な環境を設定する必要がないことです。実際、単純な単体テスト内でこのコードを使用できます。

于 2009-10-09T16:04:47.563 に答える