私は単体テストを書いており、Cache
を模擬することが有利かどうか疑問に思っています。Mocking System.Web.Caching.Cache - モックを確認するかヌルをチェックしますか?
は現在、私のテストでは、私はHttpContextBase
をからかってるとカスタムHttpContextFactory
でラップ:
var mockedHttpContextBase = new Mock<HttpContextBase>();
IHttpContextFactory httpContextFactory = new HttpContextFactory
{
Current = mockedHttpContextBase.Object
};
と私のコードは、キャッシュがそれで何かを行う前にnullの場合、私はチェックIHttpContextFactory
を消費するとき。
var cache = _httpContextFactory.Current.Cache;
Func<SomeReturnType> doSomeWork =() => _foo.someMethodIExecute(param1,param2);
return cache != null ? cache.GetOrStore("doSomeWorkCacheKey",doSomeWork, 900)
: doSomeWork.Invoke();
それが正しい、私はそれを使用するか、あなたのユニットテストを実行するとき、それがnullではないように、あなたはテストでも、キャッシュをあざけるだろうたびに、このようなヌルされたキャッシュをチェックしますか?
ありがとうジミー。ポイント1に関しては、既存のキャッシュに依存するテストをどのように記述しますか?この場合、テストを実行するためにどのようにキャッシュを模擬しますか? –
@JamieDixon:封印されているので、あなたは本当に 'キャッシュ 'をモックできません。実際の 'Cache'実装を使用してそれを事前に設定し、' HttpContextBase'モックがリクエストされたときにあらかじめ設定されたキャッシュを返さなければなりません。私は私のポストに例を追加しました。 –
もう一度ジミー。私はあなたの時間と助けに感謝します。私はより多くの検索をした後、自分で答えを加えました。 'HttpRuntime.Cache'を使うとより適切です。なぜなら、System.Web.Caching.Cache'がすべてが設定されていない場合に' NullReferenceExeption'を送出する場所で動作する必要があるすべてのインスタンスを生成するからです。 –