現在のコンテキストに依存するいくつかの静的メソッドをテストする必要があります。HttpContextWrapperこれで、 を使用して、自分のコードからこの依存関係を確実に削除できます。問題は、これらのメソッドで使用しているサード パーティの API にあります。彼らはに頼っているHttpContextので、私はそれについて何もできません。ただし、私がやろうとしているのは、HttpContextを myで設定することHttpContextBaseです。
したがって、私のコードは次のようになります。
public static bool IsSignedUpUser()
{
//This calls IsSignedUpUser with the production context
return IsSignedUpUser(new HttpContextWrapper(HttpContext.Current));
}
public static bool IsSignedUpUser(HttpContextBase context)
{
HttpCookie objCookie = SomeExternalAPIThatReliesOnHttpContextBeingSet();
return (objCookie != null)
}
私がやりたいことは次のようなものです:
HttpContext.Current = context; //where context is a mocked HttpContextBase
このように、サード パーティの API がHttpContextクエリ文字列、Cookie 値などを検索しているときに、NullReferenceException.
なぜこれはだまされないのですか?
デュープとして参照されている質問のコードでは、作成者は外部依存関係なしに完全に制御しているように見えます。に依存するサードパーティのライブラリを使用していますHttpContext。メソッド シグネチャを受け入れるように変更できないため、自分をHttpContextBaseに割り当てる方法が必要です。HttpContextBaseHttpContext
これが不可能であり、これまでのところ不可能であると信じている場合は、これらの依存関係を削除する方法を提案する適切な回答が必要です。500 - 内部サーバー エラーには、少なくとも 1 つの適切な提案があります。