我一直在DotNetKicks上看到这个......然而却无法确切地知道它是什么(英文)或它的作用?你能解释它是什么,或者为什么我会用它?
答案 0 :(得分:29)
Moq是C#/ .NET的模拟框架。它用于单元测试,以将被测试的类与其依赖关系隔离开来,并确保调用依赖对象上的正确方法。有关模拟的更多信息,您可能需要查看Mock Objects上的维基百科文章。
其他模拟框架(适用于.NET)包括JustMock,TypeMock,RhinoMocks,nMock,。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的嘲弄引擎。