HttpContext
私は以下のとの違いを知っていHttpContextWrapper
ます...
HttpContext
これはビンテージの asp.net コンテキストです。これの問題は、基本クラスがなく、仮想ではないため、テストに使用できない (モックできない) ことです。関数の引数として渡すのではなく、型 HttpContextBase の変数を渡すことをお勧めします。
HttpContextBase
これは、(C# 3.5 の新機能) HttpContext の置き換えです。抽象的であるため、モック可能になりました。コンテキストが渡されることを期待する関数は、これらのいずれかを受け取ることを期待する必要があるという考えです。HttpContextWrapper によって具体的に実装されています
HttpContextWrapper
これも C# 3.5 の新機能です。これは HttpContextBase の具体的な実装です。通常の Web ページでこれらのいずれかを作成するには、new HttpContextWrapper(HttpContext.Current) を使用します。
コードを単体テスト可能にするには、すべての変数と関数パラメーターを HttpContextBase 型として宣言し、Castle Windsor などの IOC フレームワークを使用して挿入します。通常のコードでは、キャッスルは 'new HttpContextWrapper (HttpContext.Current)' に相当するものを注入しますが、テスト コードでは HttpContextBase のモックを与えます。
しかし、私はその実際の使用について認識していません。Web フォームと比較して、単体テストで役立つと聞きました。しかし、それはどのように便利ですか?