インデクサーに渡された値を見つける必要があります。
テストする必要があるコード (c#) は次のとおりです。
string cacheKey = GetCacheKey(cacheKeyRequest);
string cachedValue = myCache[cacheKey] as string;
したがって、インデクサーに渡された「cacheKey」の値を識別できる必要があります。
キャッシュ オブジェクトのモックを使用してこれを試みました。
var cache = MockRepository.GenerateMock<WebDataCache>();
コードが実行された後、モックにクエリを実行して、インデクサーに渡された値を特定するという考えです。
var actualCacheKey = cache.GetArgumentsForCallsMadeOn(a => a["somevalue"], opt => opt.IgnoreArguments())[0][0].ToString();
これにより、コンパイル エラーが発生します。ステートメントとして使用できるのは、代入、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみです。
これを次の方法で関数にするという1つの提案を見ました。
var actualCacheKey = cache.GetArgumentsForCallsMadeOn(a => a["somevalue"] = null, opt => opt.IgnoreArguments())[0][0].ToString();
これはコンパイルされるようになりましたが、実行時に InvalidOperationException がスローされます: 確認する必要がありません。アクションのメソッド呼び出しが仮想 (C#) / オーバーライド可能な (VB.Net) メソッド呼び出しであることを確認してください。
助言がありますか?[RhinoMocks.3.6.1 を使用しています]
よろしくお願いします
グリフ
追伸 - 以前http://groups.google.com/group/rhinomocksに投稿しましたが、数日経っても閲覧数は憂鬱なほど低いままです。