无论我如何尝试,我都无法模仿Rhino Mocks的干净语法,而无需声明代表。
示例:
Expect.Call(service.HelloWorld("Thanks"))
您对如何做到这一点有任何想法吗?
感谢。
答案 0 :(得分:7)
您可以使用较新版本的.NET
中提供的Action委托void Execute(Action action) {
action();
}
void Test() {
Execute(() => Console.WriteLine("Hello World!"));
}
答案 1 :(得分:6)
在3.5中使用Lambda语法,您可以获得类似的语法。
public void Call(Action action)
{
action();
}
Expect.Call(() => service.HelloWorld("Thanks"));
Moq是一个模拟框架,它使用Lambda语法进行模拟。
var mock = new Mock<IService>();
mock.Setup(service => service.HelloWorld("Thanks")).Returns(42);
答案 2 :(得分:0)
在Rhino Mocks中,它实际上是在调用该方法。此时对象处于设置模式,当您调用它时,它正在记录参数和设置期望值。这就是为什么你可以摆脱委托语法。不幸的是,在许多其他情况下实际上并不可能。