gpt4 book ai didi

c# - 你能解释一下 StrictMock 和 Partialmock 之间的区别吗?

转载 作者:可可西里 更新时间:2023-11-01 09:00:30 27 4
gpt4 key购买 nike

因为我使用的是 RhinoMocks 3.6 版并且我没有使用 Record-Replay 并且我没有调用 Verify 方法来对模拟进行断言;

你能解释一下非常简单的区别吗?

MockRepository.GenerateMock()
MockRepository.GeneratePartialMock()
MockRepository.GenerateStrictMock()

注意:我一直使用 .GenerateMock 来创建我的模拟,并且我已经通过提供参数期望来断言方法调用。

最佳答案

区别是explained in this article

如果您在 StrictMock 上没有创建任何期望,并且在模拟上调用了一个方法,则会抛出异常。

如果您在 PartialMock 上没有创建任何期望,并且在 mock 上调用了一个方法,则不会发生任何特殊情况。如果该模拟派生自基类,则调用会渗透到现有的基类实现。

还有一个叫做 DynamicMock 的东西。如果您在 DynamicMock 上没有创建期望,并且在 mock 上调用了一个方法,则会调用一个 stub 方法。如果有返回值,则返回默认值(例如 null0)。

GenerateMock 我相信创建了一个 DynamicMock

Ayende 选择了这个默认值,因为他建议仅使用 DynamicMockStubStrictMock 创建了脆弱的测试,并且通常违反了每次测试只验证一种行为的概念。

请参阅本文:http://ayende.com/wiki/Rhino%20Mocks%203.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged

我还看到他说,从严格的模拟开始,一旦您对被测代码的行为感到满意,就可以将测试返回到动态模拟/ stub ,这很有用。没有那个链接:)

关于c# - 你能解释一下 StrictMock 和 Partialmock 之间的区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7831404/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com