犀牛模拟:存根和嘲笑。有什么区别

发布于 2024-12-02 11:52:25 字数 138 浏览 2 评论 0原文

我在单元测试中使用 Rhino Mocks。

我想知道 STUBS 和 MOCKS 之间的区别(mocks.Stub()mocks.StrictMock())。

I'm using Rhino Mocks in my unit test.

I would like to know the difference between STUBS and MOCKS (mocks.Stub<T>() and mocks.StrictMock<T>()).

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

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

发布评论

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

评论(1

雨的味道风的声音 2024-12-09 11:52:25

我想以前就有人问过。

它通常是相同的,但有以下区别:

  • 严格模拟在每个未预期的调用上抛出异常
  • 动态模拟接受意外调用并且只返回默认值(例如 null )
  • 存根就像动态模拟,但默认情况下打开“属性行为”。这允许写入和读取字段等属性,但不允许在属性上使用 StubExpectAssertWasCalled。此行为也可以在普通模拟上配置。但对于存根来说,这是默认值。

由于Rhino更改为AAA语法,因此不鼓励使用严格模拟,因为它们使测试代码非常难以维护。


类似问题:

我找不到有关Rhino实现的信息,所以我没有将此问题标记为重复。

I think it had been asked before.

It is generally the same with the following differences:

  • Strict Mocks throw exceptions on each call which had not been expected
  • Dynamic Mocks accept unexpected calls und just return default values (eg. null)
  • Stubs are like dynamic mocks but have "property behaviour" turned on by default. This allows writing and reading properties like fields, but doesn't allow Stub, Expect nor AssertWasCalled on properties. This behaviour can also be configured on a normal Mock too. But for stubs it is the default.

Since Rhino changed to AAA syntax, it is discouraged to use Strict Mocks, since they make test code very hard to maintain.


Similar questions:

I can't find the information about the Rhino implementation, so I don't mark this question as duplicate.

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