什么是Moq?

时间:2009-03-24 19:27:28

标签: c# moq

我一直在DotNetKicks上看到这个......然而却无法确切地知道它是什么(英文)或它的作用?你能解释它是什么,或者为什么我会用它?

3 个答案:

答案 0 :(得分:29)

Moq是C#/ .NET的模拟框架。它用于单元测试,以将被测试的类与其依赖关系隔离开来,并确保调用依赖对象上的正确方法。有关模拟的更多信息,您可能需要查看Mock Objects上的维基百科文章。

其他模拟框架(适用于.NET)包括JustMockTypeMockRhinoMocksnMock,。iec。

答案 1 :(得分:11)

简单地说,Moq是一个图书馆,当你在项目中加入时,你可以轻松地进行单元测试。 为什么?因为一个函数可能会调用另一个函数,然后是另一个函但实际上需要的是,只需从第一次调用返回到下一行的返回值。 Moq有助于忽略该方法的实际调用,而是返回该函数返回的内容。并且在所有代码行执行后验证,你想要的是你得到了什么。太多的英语,所以这里有一个例子:

String Somethod()
{
  IHelper help = new IHelper();
  String first = help.firstcall();
  String second= secondcall(first);
  return second;
}

现在,first需要secondcall(),但您实际上无法在其他图层中调用help.firstcall()。所以Mocking已经完成,假装该方法被称为:

[TestMethod]
public void SomeMethod_TestSecond
{
  mockedIHelper.Setup(x=>x.firstcall()).Returns("Whatever i want");  
}

在这里,请注意,SetUP作为伪造方法调用,我们只对Returns感兴趣。

答案 2 :(得分:3)

Moq是进行.Net TDD的嘲弄引擎。