現在のコンテキストに依存するいくつかの静的メソッドをテストする必要があります。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
に割り当てる方法が必要です。HttpContextBase
HttpContext
これが不可能であり、これまでのところ不可能であると信じている場合は、これらの依存関係を削除する方法を提案する適切な回答が必要です。500 - 内部サーバー エラーには、少なくとも 1 つの適切な提案があります。