【问题标题】:Rhino Mocks WhenCalled - Delegate 'System.Action' does not take 1 argumentsRhino 模拟WhenCalled - 委托“System.Action”不接受 1 个参数
【发布时间】:2016-07-13 14:12:38
【问题描述】:

WhenCalled 到处都有很好的记录,我不打算解释我为什么要使用它,但我无法让它以与我在主题。

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

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

但这并不能为我编译 - 我只是收到一条错误消息,说 Delegate 'System.Action' 不接受 1 个参数。

我正在使用 Rhino Mocks 的 V 4.0 - 这个方法有改变吗?我想用 WhenCalled 获取传递给 SingleOrDefault 的参数(在本例中为 lambda 表达式)。

【问题讨论】:

    标签: rhino-mocks rhino


    【解决方案1】:

    所有回答都在这篇博文中:

    Rhino Mocks 4.0.0

    以前,WhenCalled 允许您执行一个操作,该操作将封装方法调用的数据结构作为单个参数。由于正在调用 Action,因此无法更改期望的返回值。 在当前版本中,WhenCalled 被稍微修改为简单地执行一个 Action

    为了提供与原始“WhenCalled”类似的功能,添加了一个新方法“Intercept”,该方法需要一个 Action,该 Action 作为单个参数采用封装方法调用的数据结构

    tl;dr:使用拦截而不是WhenCalled

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 2013-04-22
      相关资源
      最近更新 更多