如何在MOQ中自动模拟容器(例如IList)而不使用extensions/contrib

zhe*_*nic 4 c# moq mocking automocking

我想知道是否有可能在MOQ中自动模拟容器而不添加任何MOQ库.我在找到一个自动插入IList的干净方法时遇到了问题.

提前致谢!

Gil*_*les 7

回答你的问题:不.

你真的需要模仿IList吗?

模拟通常用于:

  • 测试行为(通过期望)而不是结果.
  • 抽象出复杂或重的依赖.
  • 通过轻松返回所需的值来简化测试代码.
  • 仅测试您的课程.

例如,您可以模拟访问数据库的存储库.通常,您的测试不会模拟列表,而是使用模拟对象返回包含测试所需数据的列表.

即:

var aList = new List<int>() { 1, 2, 3, 4, 5 };
var mockService = new Mock<IMyService>();
mockService.Setup(mock => mock.GetFooList()).Returns(aList);
Run Code Online (Sandbox Code Playgroud)

如果您指定需要模拟容器的原因,这可能有助于澄清您的问题.