6

我正在尝试使用 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));

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

有任何想法吗?

[编辑] 我刚刚发现了一些东西;如果我将设置行替换为

  .Setup(m => m.Run(fakeAction))

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

4

1 回答 1

15

有什么问题:

It.IsAny<Action<string, string>>()
于 2009-05-17T17:48:20.613 回答