我正在尝试使用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(......某些动作......)的任何调用都返回false。似乎Moq库试图将操作与我在Setup()调用中传递给Run()的参数进行匹配,并且失败。实际上我在Run()调用中放了什么动作并不重要......它仍然返回false。
有什么想法吗?
[编辑]我刚刚发现了一些东西;如果我用
替换设置行 .Setup(m => m.Run(fakeAction))
测试通过了。但是,我不知道将调用.Run()方法的操作,因此这不是一个解决方案。有人知道It.IsAny等同于行动吗?
答案 0 :(得分:14)
出了什么问题:
It.IsAny<Action<string, string>>()