【发布时间】: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 等效于操作?
【问题讨论】: