如何在没有扩展/贡献的情况下以最小起订量自动模拟容器(例如 IList)

发布于 2024-12-23 00:19:19 字数 89 浏览 1 评论 0原文

我想知道是否可以自动模拟 MOQ 中的容器,无需对 MOQ 库进行任何添加。 我在寻找一种干净的方法来自动模拟 IList 时遇到问题。

提前致谢!

i wonder if it is possible to auto mock
a container in MOQ without any additions to the MOQ lib.
I am having problems finding a clean way to automock an IList.

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我三岁 2024-12-30 00:19:19

回答你的问题:不需要。

你真的需要模拟 IList 吗?

模拟通常用于:

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

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

即:

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

如果您指定为什么需要模拟容器,可能会有助于澄清您的问题。

Answer to your question: No.

Do you really need to mock IList?

Mocks are typically used to:

  • To test behaviour (via expectations) rather than results.
  • To abstract away complex or heavy dependencies.
  • To simplify your tests code by easily returning a desired value.
  • To test only your class under tests.

You could for example mock a repository that access a database. Normally your tests would not mock a list but rather have a mocked object return a list with the data that you need for your test.

ie:

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

It might help clarify your question if you specify why you need to mock a container.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文