问题标签 [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 投票
7 回答
28752 浏览

c# - 使用 C# 和 RhinoMocks 进行测试驱动开发的最佳实践

为了帮助我的团队编写可测试的代码,我想出了这个简单的最佳实践列表,以使我们的 C# 代码库更具可测试性。(其中一些观点提到了 Rhino Mocks 的限制,这是一个 C# 的模拟框架,但这些规则也可能适用于更普遍的情况。)有没有人有任何他们遵循的最佳实践?

为了最大限度地提高代码的可测试性,请遵循以下规则:

  1. 先写测试,再写代码。原因:这可确保您编写可测试的代码,并且每一行代码都得到为其编写的测试。

  2. 使用依赖注入设计类。原因:你不能模拟或测试看不见的东西。

  3. 使用 Model-View-Controller 或 Model-View-Presenter 将 UI 代码与其行为分开。原因:允许在最小化无法测试的部分(UI)的同时测试业务逻辑。

  4. 不要编写静态方法或类。 原因:静态方法很难或不可能隔离,Rhino Mocks 无法模拟它们。

  5. 对接口进行编程,而不是类。原因:使用接口澄清了对象之间的关系。接口应该定义对象从其环境中需要的服务。此外,可以使用 Rhino Mocks 和其他模拟框架轻松模拟接口。

  6. 隔离外部依赖。原因:无法测试未解决的外部依赖项。

  7. 将您打算模拟的方法标记为虚拟。原因:Rhino Mocks 无法模拟非虚拟方法。

0 投票
2 回答
1731 浏览

unit-testing - Rhino Mocks,MbUnit:检查对象是否引发事件的最佳方法

我有一个正在测试的对象,它引发了一个事件。使用 Rhino Mocks 检查它是否被饲养的最佳方法是什么?

我能想到的最好的(我确信它会比这更好):

0 投票
4 回答
2832 浏览

.net - Rhino Mocks:如何模拟 ADO.NET 的 DataRow?

ADO.NET 有臭名昭著的 DataRow 类,您无法使用 new 对其进行实例化。现在这是一个问题,因为我发现需要使用 Rhino Mocks 来模拟它。

有谁知道我如何解决这个问题?

0 投票
1 回答
971 浏览

c# - 如何为将在 Rhino Mocks 中的另一个线程上进行的调用设置期望

我有一个类,旨在启动一个后台线程,从中调用一个管理器。出于单元测试的目的,该经理将被嘲笑。相关的代码片段是:

问题是,经过验证后,我们抛出了两个异常 - 一个在测试线程上表明调用CacheSize是预期的但没有发生,另一个在后台线程(在 内CacheJanitor)表明调用CacheSize发生但不是预期的。

显然,期望与创建它们的线程有密切关系。有谁知道一种方法来指示 Rhino Mocks 期望在不同的线程上进行调用(在定义期望时甚至不存在)?

编辑:

忘了提到我们在不久的将来仍然使用 VS 2005 的限制。Rhino Mocks 版本是 3.4 - 我将尝试使用 3.5,但改进列表似乎并未表明该区域有任何修复。

目前我可能会为这一系列测试创建自己的模拟对象并在其中记录结果,但肯定会感谢任何允许我使用 Rhino Mocks 干净地实现这一目标的解决方案。

0 投票
1 回答
141 浏览

unit-testing - 快速犀牛帮助

有人可以看看这段代码并告诉我是否有任何明显的原因它不应该工作?当在我的代码中调用 service.getResponse 时,模拟框架只返回 null,而不是我指定的对象。

0 投票
1 回答
199 浏览

rhino-mocks - Rhino Mocks 可以为我编写期望语句吗?

我有一组与远程数据库对话的 Visual Studio Team System 单元(真正的集成)测试。测试变得太慢和笨重。我想用模拟版本替换整个测试集。问题是编写所有模仿整个数据库的期望语句是很痛苦的。

有谁知道将运行现有测试的工具或附加组件,找出非模拟版本实际返回的内容并写出 Expect.Call 以复制功能?我知道这是一个很长的机会,但我觉得这应该是可能的。

0 投票
2 回答
875 浏览

c# - 是否可以抛出 MessageQueueException?

我在 RhinoMocks 中使用一个模拟对象来表示一个调用 MessageQueue.GetPublicQueues 的类。我想模拟消息队列在工作组模式下运行时抛出的异常,即MessageQueueException,以确保我正确捕获异常

MessageQueueException 没有公共构造函数,只有标准的受保护异常构造函数。有没有合适的方法从模拟对象/Expect.Call 语句中抛出这个异常?

0 投票
2 回答
2330 浏览

.net - rhino-mocks - 很好的示例应用程序

我知道有几个关于 rhino-mocks 教程的问题。但我想知道是否有任何示例应用程序在使用 ado.net 的 n 层业务应用程序的上下文中使用 rhino-mocks。

我觉得 tutes 很好,但它们似乎并没有把所有东西都放在一起。因此,我正在寻找一个能够将全貌结合在一起的示例应用程序。

另外,我认为缺少专门处理模拟和测试数据访问层中的逻辑的示例。

干杯安东尼

0 投票
6 回答
5177 浏览

asp.net - 模拟 HttpContext 不起作用

我正在尝试模拟 HttpContext 以便我可以对控制器的 Request.IsAuthenicated 调用进行单元测试。我正在使用我在 Scott Hanselman 的博客中找到的代码来使用 rhino.mocks 来模拟 HttpContext。所以我有这个单元测试片:

在我的控制器操作中, if(Request.IsAuthenticated).... 当我尝试运行单元测试时,测试失败并抛出空异常,当我尝试调试单元测试时,我看到 HttpContext 从未分配给控制器。有任何想法吗?

0 投票
7 回答
22830 浏览

tdd - 断言一个方法只被调用一次

我想断言一个方法只被调用一次。我正在使用 RhinoMocks 3.5。

这是我认为可行的方法:

GetMeMyThing()如果第二次调用调用,我希望此测试失败source.GetSomethingThatTakesALotOfResources()