HttpRequest
多数の非仮想プロパティとメソッドを備えています。あなたはそれを嘲笑することはできません。Page.Request からアクセスしている場合は、新しいインスタンスを作成してテスト用の値を設定することさえできません。これは、UI が自動化されたテストを受けることがほとんどない (あったとしても) 理由の 1 つです。多くの場合、それは不可能です。そのため、MVC や MVVM などの自動テストを可能にするパターンを使用します。テスト可能な別のクラスにできるだけ多くの処理ロジックをプッシュすることで、実行する必要がある手動テストの量を減らします。
あなたが利用できる最善の策は、モックできるクラスを作成し(つまり、仮想メソッドまたはインターフェースとしてスポーツとキャストを使用して)、そのクラスHttpRequest
を介してのみアクセスすることです。
たとえば、ページ処理の一部として特定の Cookie 値を取得する場合は、CookieHandler
次のようにクラスを作成できます。
public class CookieHandler
{
private HttpRequest CurrentRequest;
public CookieHandler(HttpRequest request)
{
CurrentRequest = request;
}
public virtual HttpCookie UserLanguagePreference
{
get
{
return CurrentRequest.Cookies["UserLanguagePreference"].Name;
}
}
}
これは理想的なクラスではなく、単なる例です。は仮想であるためUserLanguagePreference
、Rhino でモックできます。シングルトン (テストで置き換え可能CookeHandler
) を作成したり、UI ページでプロパティベースのインジェクションを使用したり、Unity のような DI フレームワークを使用したりすることができます。
重要なのは、自動化された単体テストですべてをテストすることはできないため、気にしないでください。できる限りテストを行い、残りは統合および手動のユーザー受け入れテストのために取っておきます。