1
我试图使用Rhino.Mocks的流畅嘲讽的风格,并具有以下代码调用“工厂”一个模拟的IDictionary对象的工作原理:犀牛制品 - 流利的嘲讽 - Expect.Call问题
With.Mocks(_Repository).Expecting(() =>
{
Expect.Call(() => factories.ContainsKey(Arg<String>.Is.Anything));
LastCall.Return(false);
Expect.Call(() => factories.Add(Arg<String>.Is.Anything, Arg<Object>.Is.Anything));
}).Verify(() =>
{
_Service = new ObjectRequestService(factories);
_Service.RegisterObjectFactory(Valid_Factory_Key, factory);
});
现在,我能够设置ContainsKey调用的返回值的唯一方法是在以下行上使用LastCall.Return(true)。我确定我在这里混合样式作为Expect.Call()有一个.Return(Expect.Action)方法,但我不知道我是如何正确使用它返回一个布尔值?
任何人都可以帮忙吗?希望这个问题很清楚 - 让我知道是否有人需要更多信息!
干杯, 本
喜雅, 感谢您的回复!是的,我可以稍微修改我的测试以删除lambda表达式,并且允许我指定布尔返回值! 我仍然很想知道如何使用.Return(Expect.Action)方法工作,尤其是因为我在整个测试中都使用了Lambda!它看起来像我应该能够指定一个返回值,并使用lambda,除非我完全误解了一些东西... – 2010-05-17 09:19:54
嗨本,你应该只使用Expect.Call委托/ lambda当模拟函数返回void。将lamda表达式和.Return(Expect.Action)一起使用是没有意义的。 .Return(Expect.Action)的出现是因为lambda表达式的类型为Expect.Action,与使用我用于Expect.Call的语法时.Return(bool)出现的方式相同。 – 2010-05-17 09:43:01
好的,这样做更有意义!感谢您的帮助Jakob。 – 2010-05-17 09:53:43