问题标签 [rhino-mocks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1559 浏览

rhino-mocks - 是否可以使用 Rhino Mocks 生成部分存根?

我通常是单元测试和模拟的新手,并且正在尝试为我的一个类设置测试,我想确保从同一个类中的另一个方法调用特定方法。因此,我想使用具体的实现,但要模拟它的一部分。这可能吗?

因此,我试图设置一个将调用 GetAccounts() 的存根(我想使用具体的实现),但我想检查该方法是否调用 GetAccounts(null)。

问题是具体类在 CallOriginalMethod() 行上被调用,当我调用 stub.GetAccounts() 时,我希望在重放期间调用该行。因此,无论是在录制期间还是在我执行测试时,当我只是想模拟它们时都会调用实现的具体方法——正如我已经解释的那样。这是我的误解吗?我应该不能模拟/存根具体类和接口吗?

我是否需要将 virtual 关键字添加到我希望能够模拟的方法中?

这甚至可能吗?我该怎么做?

0 投票
2 回答
16059 浏览

c# - Rhino Mocks Exception Expect #1 Actual #0 : 需要帮助

我已经对此进行了搜索,这似乎是一个包罗万象的内容,不幸的是,我读过的所有内容都无济于事。这是课程:

和测试:

也试过了,还是不行

但我不断收到这个异常:

Rhino.Mocks.Exceptions.ExpectationViolationException:
IMockInterface.MockedMethod(); 预期 #1,实际 #0

现在,从我所读到的内容来看,这表明要么使用与预期参数不同的方法调用了该方法,要么从未调用过该方法,但预计会调用该方法。这不是测试的情况。

旁注:这是我第一次真正使用没有内部代码的 Rhino.Mocks,所以我基本上是边走边学。这里可能有一些非常愚蠢的东西......

这是评论过的旧测试,但不是我应该使用的:

0 投票
1 回答
12889 浏览

rhino-mocks - Rhino Mocks:如何在方法调用中模拟方法调用?

我有一个非常简单的类,有两种方法;一个将被调用,另一个将被调用。这个想法是调用 OuterMockMethod 方法但模拟 InnerMockMethod。现在我似乎只能模拟 OuterMockMethod 方法。

现在这可行,但这不是我想模拟的方法:

如您所见,它调用了它喜欢的 OuterMockMethod,但我不希望这样。我想模拟 InnerMockMethod,这样当 OuterMockMethod 调用它时,它会返回我想要的。

0 投票
1 回答
666 浏览

unit-testing - Rhinomocks 3.5 for dummy...即我

我正在尝试使用 Rhinomocks 3.5 和新的 lambda 表示法来模拟一些测试。我读过 这个,但还有很多问题。有没有完整的例子,特别是对于 MVC 类型的架构?

例如,模拟这个的最佳方法是什么。

有一个视图界面和一个演示者界面。它在控制器上调用一个事件。

我想出的是这个。

它通过了,但我不知道它是否正确。

是的,我们正在开发后进行测试……需要快速完成。

0 投票
1 回答
1517 浏览

.net - Rhino Mocks:没有静态 MockRepository 方法的 AAA 测试语法?

我一直在使用(并且喜欢)新的 Rhino Mocks AAA 语法。然而,令我困惑的一件事是我必须像这样创建我的存根和模拟:

而不是实例化的 MockRepository:

这种语法将使我的单元测试更容易转换。

从阅读 Ayende 的 wiki 看来,第二种语法应该可以工作,但我就是无法让它正常工作。如果我这样做,那么我必须使用 Record/Playback 块。在没有静态方法的情况下,我也无法在网上找到任何使用新语法的人的示例。

所以我的问题是,是否有其他人设法在不使用静态方法且无需求助于记录/播放的情况下使 AAA 语法工作?如果是这样,我错过了什么?

0 投票
3 回答
5364 浏览

c# - 模拟 IEnumerable 的 GetEnumerator() 方法类型

以下测试用例在 rhino 模拟中失败:

我认为这个测试用例有一些非常微妙的地方,我认为这是因为我没有考虑过 Rhino Mocks 存根是如何工作的。通常,当您枚举一个 IEnumerable 时,您将从一个新的 IEnumerator 开始。在上面的示例中,看起来我可以在第二次调用 sum 时重新使用相同的枚举数,如果枚举数已经在其序列的末尾,这可以解释为什么第二次调用 Sum() 返回0. 如果是这种情况,我如何模拟 GetEnumerator() 以使其按照我想要的方式运行(例如,新的枚举器或相同的枚举器重置到位置 0)?

您将如何修改上述测试用例以使第二个 .Sum() 调用实际上返回 6 而不是 0?

0 投票
2 回答
629 浏览

c# - 如何在单元测试中处理太多的模拟期望?

我正在用 MVP 模式为我的演示类编写单元测试。但是我在编写模拟设置代码时遇到了麻烦。

我有一个演示者,当调用演示者的 Load 方法时,我想测试视图应该加载类属性、表字段、数据类型、设置演示者......所以当演示者加载时我有不同的事情要做时,我必须添加新的期待测试。并且测试每次都变得越来越大。

这段代码中是否有代码异味?我该如何改进或简化这一点?

0 投票
5 回答
2409 浏览

unit-testing - 在单元测试中使用模拟时如何避免重复代码

我正在使用依赖注入为我正在测试的类之外的代码提供模拟。我发现自己一遍又一遍地编写了很多相同的代码,因为我需要模拟在我想要测试的方法中使用的 AuthProvider、ConfigurationManager 等。该方法包含分支(if-then-else),因此我有多个测试来测试该方法的所有执行路径。我多次实例化每个模拟(在每种测试方法中一次),但我想知道这是否是错误的方法?此外,我对模拟和预设响应提出了期望,这些响应显然主要是复制粘贴,因为在每个方法中都会调用诸如 AuthProvider.Authenticate() 之类的调用

在每种方法中,我都设置了一个模拟存储库,并在每种方法结束时验证了模拟存储库。我是否应该有某种工厂来创建这些模拟以及设置它们的期望和返回值,如果是这样,如何?

为了实现模拟,我正在使用 RhinoMocks。

0 投票
4 回答
1285 浏览

.net - 初学者犀牛模拟问题

所以我是 rhino mocks 的新手,我正试图让它在我正在进行的 MVP 模式项目中运行。所以我有一个代表我的视图的接口和我的 Presenter 的一个类,如下所示:

我正在尝试设置一个测试来模拟该DoStuff方法,所以我有一个这样的基本夹具:

但是我不断从方法中得到一个空引用异常DoStuff(在期望设置期间),因为 View 对象为空。这就是我卡住的地方。我已经调用了Init分配View属性值的方法,并且我认为期望设置的重点是该方法本身从未被调用过?

0 投票
1 回答
2768 浏览

c# - 如何使用 Rhino Mocks 模拟索引属性?

如何使用 Rhino Mocks 模拟索引属性?