我正在尝试使用 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 等价的动作吗?