24

我一直在 DotNetKicks 等上看到这一点......但无法确切知道它是什么(英文)或它的作用?你能解释一下它是什么,或者我为什么要使用它吗?

4

3 回答 3

36

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

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

于 2009-03-24T19:29:18.620 回答
20

简单来说,Moq 是一个库,当您将其包含在项目中时,您可以轻松地进行单元测试。为什么?因为一个函数可能会调用另一个函数,然后是另一个函数,依此类推。但实际上需要的是第一次调用的返回值以继续下一行。Moq 有助于忽略该方法的实际调用,而是返回该函数返回的内容。并在所有代码行执行后验证,你想要的是你得到什么。英语太多了,举个例子:

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

现在,这里first需要 for secondcall(),但您实际上不能help.firstcall()在其他层调用它。所以 Mocking 完成了,假装该方法被调用:

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

在这里,想想,SetUP作为伪造的方法调用,我们只是对Returns.

于 2013-08-14T19:13:20.850 回答
3

Moq 是一个用于 .Net TDD 的模拟引擎。

于 2009-03-24T19:29:29.447 回答