【问题标题】:Moq with Action argument带 Action 参数的起订量
【发布时间】:2009-05-17 17:33:50
【问题描述】:

我正在尝试使用 Moq 3.x,它运行良好。但是,我有一个问题,我不知道如何解决。给定

public interface ITestSpec
{
  bool Run(Action<string, string> onIncorrectResponse);
}

我正在尝试以下方法:

var passingTestSpec = new Mock<ITestSpec>();
passingTestSpec
  .Setup(m => m.Run(null))
  .Returns(true);

Action<string, string> fakeAction =
  (expected, actual) => { throw new Exception("Should not run"); };

Assert.IsTrue(passingTestSpec.Object.Run(fakeAction));

我的问题是对通过TestSpec.Object.Run(... some action ...) 的任何调用都返回false。似乎 Moq 库正在尝试将操作与我在 Setup() 调用中传递给 Run() 的参数相匹配,但失败了。实际上,我在 Run() 调用中执行的操作并不重要……它仍然返回 false。

有什么想法吗?

[编辑] 我刚刚发现了一些东西;如果我用

替换设置行
  .Setup(m => m.Run(fakeAction))

测试通过。但是,我不知道 .Run() 方法将被调用什么操作,所以这不是解决方案。任何人都知道 It.IsAny 等效于操作?

【问题讨论】:

    标签: c# moq


    【解决方案1】:

    有什么问题:

    It.IsAny<Action<string, string>>()
    

    【讨论】:

    • 大声笑我应该知道有人会找到解决方案...认为我在这上面浪费了几个小时:(谢谢,我会去的,它比我的更好。
    猜你喜欢
    • 2015-10-10
    • 2016-07-02
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2015-02-02
    • 2011-02-27
    • 1970-01-01
    • 2013-09-26
    相关资源
    最近更新 更多