摘要:原文地址:Comparing Moq to Rhino Mocks
原文发表时间:Mar 23, 2008
长期以来我是Rhino Mocks的大粉丝,乐此不疲的写关于它的文章。当Moq出现时,我一直对它无动于衷,因为我原以为lambda表达式是华而不实的。我认为如果它只是使用lambads的话,我对此不感兴趣。
幸运的是 在我的twitter圈子里有一些人一直对Moq大加赞赏。我是一个乐于承认错误的人,所以我决定找出Moq究竟好在哪里。结果发现,使用lambdas并不是Moq最优的部分。它有清晰干净的API设计以及弱的录制/回放模式.
为了更好的说明我的意思,这里有一个简单的例子,分别用Rhino Mocks和Moq写的两个单元测试方法。使用mock框架的测试,只用一个方法来建出一个接口。
[Test]
public void RhinoMocksDemoTest()
{
MockRepository mocks = new MockRepository();
var mock = mocks.DynamicMock<ISomethingUseful>();
SetupResult.For(mock.CalculateSomething(0)).IgnoreArguments().Return(1);
mocks.ReplayAll();
var myClass = new MyClass(mock);
Assert.AreEqual(2, myClass.MethodUnderTest(123));
}
[Test]
public void MoqDemoTest()
{
var mock = new Mock<ISomethingUseful>();
mock.Expect(u => u.CalculateSomething(123)).Returns(1);
var myClass = new MyClass(mock.Object);
Assert.AreEqual(2, myClass.MethodUnderTest(123));
}
阅读全文]