2016-07-13 41 views
0

WhenCalled在各处都有很好的记录&我不打算为什么我使用它,但我不能让它工作在就像我在主题中看到的每一篇文章都详细描述了一样。Rhino Mocks WhenCalled - 委托'System.Action'不需要1个参数

基本上你应该能够做这样的事情:

mock.Expect(x => x. SingleOrDefault(null)) 
    .IgnoreArguments() 
    .WhenCalled(invocation => ((Action)invocation.Arguments[0]).Invoke()); 

但这并不编译,我 - 我只是得到一个错误说委托“System.Action”不拿1个参数。

我正在使用V4.0的Rhino Mocks - 是否已更改此方法?我想使用 WhenCalled来获取传递给SingleOrDefault的参数(本例中为lambda表达式)。

回答

1

所有回答这个博客帖子:

Rhino Mocks 4.0.0

此前,WhenCalled允许你执行夺走了行动,作为一个参数,数据结构封装方法调用。由于正在调用Action,所以期望的返回值不能改变。 在当前版本中,WhenCalled已稍加修改可以简单地执行动作

为了提供类似的特征,因为原来的“WhenCalled”,一种新的方法“截取”已经被加入其中期望采取动作,作为一个单一的参数,数据结构包封方法调用

TL; DR:使用截取代替WhenCalled