【问题标题】:What are the capabilities of Moq and Rhino.mocks?Moq 和 Rhino.mocks 的功能是什么?
【发布时间】:2010-10-16 00:02:10
【问题描述】:

我找不到 Moq 和 Rhino 的具体功能比较。所有的问题都是“你更喜欢哪个以及为什么”,或者“这是你如何在 rhino 中做一个简单的模拟以及它是如何在 moq 中完成的”。

我在任何地方都找不到深度比较。我知道语法差异,我不是在寻找答案。 我正在寻找能力比较。例如:

  • Rhino 有 Expect.On() 用于线程 嘲笑。起订量可以吗?

  • 多模拟怎么样 (实现多个接口 一个模拟)。起订量可以吗?

  • 我相信 Moq 现在可以模拟受保护的成员。 Rhino 能做到吗?

编辑:我最终还研究了其他一些 .Net 框架。

【问题讨论】:

标签: mocking rhino-mocks moq typemock nmock2


【解决方案1】:

感谢过去几周做出回应的人。我最终写了一篇关于我的发现的博客文章,因为我不得不做这么多的挖掘工作,似乎我不妨总结一下,希望能帮助别人。我发布的图表整理了我的发现:

我在博文中提到的一个警告是,图表对于检查功能很有用,但大多数框架的真正优势在于它们的独特功能。我最终选择了 Moq,因为 API 易于使用。此外,所有信息都可能出现错误和更改 - 如果您不同意图表中的某些内容,请发表评论。

【讨论】:

  • 我稍微更新了图表。在接下来的一段时间内可能会对其进行一些修改,我可能会添加其他一些额外的项目。
  • 嘿@womp,你能重新上传图表吗?该链接正在重定向到一些日本标志;-)
  • @DariuszWoźniak 令人惊讶的是,我能够在旧网站的古老备份中找到它。我已经转发了 :) 当然请记住,这个答案现在已经 8 岁了!
  • 这是一个非常有用的比较图表,但由于它是 10 年前的 - 它可能已经过时了。例如:尽管我自己还没有使用 moq,但似乎至少在某些情况下它确实支持验证方法调用的顺序:参见 stackoverflow.com/a/10609506/997940riptutorial.com/moq/example/23018/…
【解决方案2】:

无论如何我都不是专家,但我相信 Rhino 添加了一些 Moq 语法,因此学习曲线已减少到您对 MoQ 的期望。我在测试中都使用过,其中一些语法几乎相同。我最初打算使用 MoQ,因为它更容易,但后来我的 bud 向我展示了最新的更新以及它们的相似程度。只是让你知道。

【讨论】:

  • 我实际上发现这是让 Rhino 变得更难的原因之一。几乎所有文档都是针对旧语法的,因此在查看示例时最终会混淆它们,从而导致各种奇怪的错误:/
  • 同意。似乎他们已经尝试以多种方式做某些事情,而没有删除“旧”的做事方式。我想这是为了兼容性。老实说,我对 MoQ 有了更好的理解,因为它不会尝试区分 Mock 或 Fake 并且没有时髦的语法。 MoQ 很不错
【解决方案3】:

Rhino 有 GetArgumentsForCallsMadeOn(),在某些情况下,IMO 可以更轻松地验证参数。

【讨论】:

    【解决方案4】:

    为了完整起见,我会注意到CodePlex 上现在有 NMock3。它可以从 NMock2 轻松迁移,只需将 NMock2.dll 的引用替换为对 NMock3.dll 的引用即可。它增加了类型安全和对重构的支持。

    【讨论】:

      【解决方案5】:

      我可能会在其中添加“行为验证”。这似乎是 Moq 的最大限制,Rhino(不确定其他人)对此没有任何问题。

      【讨论】:

      • Moq 中的行为验证有什么限制?我还没有遇到任何限制。它有Verify()和VerifyAll(),你可以将任何Setup()调用设置为Verifiable,不管返回值如何。
      猜你喜欢
      • 1970-01-01
      • 2014-08-30
      • 2016-06-07
      • 2023-04-03
      • 1970-01-01
      • 2011-03-30
      • 2018-05-20
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多