我需要找出传递给索引器的值。
我需要测试的代码(c#)如下:
string cacheKey = GetCacheKey(cacheKeyRequest);
string cachedValue = myCache[cacheKey] as string;
所以,我需要能够识别传递给索引器的“cacheKey”的值。
我尝试使用缓存对象的 Mock 进行此操作:
var cache = MockRepository.GenerateMock<WebDataCache>();
这个想法是在代码执行后,我将查询模拟以识别已传递到索引器的值:
var actualCacheKey = cache.GetArgumentsForCallsMadeOn(a => a["somevalue"], opt => opt.IgnoreArguments())[0][0].ToString();
这给了我一个编译错误:只有赋值、调用、递增、递减和新对象表达式可以用作语句。
我看到了一个建议,通过以下方式使它成为一个函数:
var actualCacheKey = cache.GetArgumentsForCallsMadeOn(a => a["somevalue"] = null, opt => opt.IgnoreArguments())[0][0].ToString();
现在可以编译,但会引发运行时 InvalidOperationException:没有设置要验证的期望,确保操作中的方法调用是虚拟 (C#) / 可覆盖 (VB.Net) 方法调用。
有什么建议么?[正在使用 RhinoMocks.3.6.1]
提前谢谢了
格里夫
PS - 我之前曾在http://groups.google.com/group/rhinomocks上发布过此内容,但几天后,观看次数仍然低得令人沮丧。