什么是Moq?

我一直看到在DotNetKicks等上提到这个…但是无法确切地知道它是什么(英文)或它做什么? 你能解释它是什么,或者为什么我会用它?

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

其他模拟框架(适用于.NET)包括TypeMock , RhinoMocks , nMock ,.etc。

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

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感兴趣。

Moq是做.Net TDD的嘲弄引擎。