问题标签 [mocking]

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.

Filter by
Sorted by
Tagged with
0 投票
9 回答
10906 浏览

什么是对象模拟,我什么时候需要它?

许多人在编写单元测试时使用 Mock Objects。什么是模拟对象?为什么我永远需要一个?我需要一个模拟对象框架吗?

0 投票
7 回答
11115 浏览

为什么我不能在我的 super() 调用周围使用 try 块?

因此,在 Java 中,构造函数的第一行必须是对 super 的调用……无论是隐式调用 super(),还是显式调用另一个构造函数。我想知道的是,为什么我不能在它周围放一个 try 块?

我的具体情况是我有一个模拟类进行测试。没有默认构造函数,但我想要一个使测试更易于阅读。我还想将从构造函数抛出的异常包装到 RuntimeException 中。

所以,我想要做的实际上是这样的:

但是 Java 抱怨说 super 不是第一个声明。

我的解决方法:

这是最好的解决方法吗?为什么Java不让我做前者?


对于“为什么”,我最好的猜测是 Java 不希望我的构造对象处于可能不一致的状态……但是,在进行模拟时,我不在乎。看来我应该能够做到以上...或者至少我知道以上对于我的情况是安全的...或者似乎无论如何都应该这样做。

我正在覆盖我在测试类中使用的任何方法,因此我没有使用未初始化变量的风险。

0 投票
10 回答
44685 浏览

你如何模拟一个密封类?

模拟密封类可能会很痛苦。我目前喜欢使用适配器模式来处理这个问题,但有些东西总是让人感觉很奇怪。

那么,模拟密封类的最佳方式是什么?

Java 答案非常受欢迎。事实上,我预计 Java 社区处理这个问题的时间会更长,并且可以提供很多东西。

但这里有一些 .NET 意见:

0 投票
14 回答
215300 浏览

Java 最好的模拟框架是什么?

在 Java 中创建模拟对象的最佳框架是什么?为什么?每个框架的优缺点是什么?

0 投票
3 回答
2872 浏览

单元测试 IHttpModule

鉴于此,您如何HttpModule在 asp.net 中对a 进行单元测试HttpApplication并且HttpContext不实现接口?

0 投票
6 回答
699 浏览

我应该如何测试从 DataReader 填充列表的方法?

所以我正在处理一些对手动数据库操作很重的遗留代码。我试图在这里保持一些表面上的质量,所以我会尽可能多地使用 TDD。

我正在处理的代码需要填充,比方说List<Foo>来自 DataReader,它返回正常运行的 Foo 所需的所有字段。但是,如果我想验证代码实际上是否为每个数据库行返回一个列表项,我正在编写如下所示的测试代码:

这也相当乏味且很容易损坏。

我应该如何处理这个问题,这样结果才不会是一团糟的脆弱测试?

顺便说一句,我目前正在为此使用 Rhino.Mocks,但如果结果足够令人信服,我可以更改它。只要替代品不是 TypeMock,因为他们的 EULA 对我上次检查的口味来说有点太吓人了。

编辑:我目前也仅限于 C# 2。

0 投票
19 回答
49851 浏览

单元测试中的随机数据?

我有一位同事为用随机数据填充其字段的对象编写单元测试。他的理由是它提供了更广泛的测试范围,因为它会测试很多不同的值,而普通测试只使用一个静态值。

我给了他很多不同的理由来反对这一点,主要是:

  • 随机值意味着测试不是真正可重复的(这也意味着如果测试可以随机失败,它可以在构建服务器上这样做并中断构建)
  • 如果它是一个随机值并且测试失败,我们需要 a) 修复对象 b) 每次都强制自己测试该值,所以我们知道它有效,但由于它是随机的,我们不知道该值是什么

另一位同事补充道:

  • 如果我正在测试异常,随机值将无法确保测试最终处于预期状态
  • 随机数据用于刷新系统和负载测试,而不是用于单元测试

还有其他人可以添加我可以给他的其他理由来让他停止这样做吗?

(或者,这是一种可接受的编写单元测试的方法,而我和我的其他同事错了吗?)

0 投票
7 回答
46883 浏览

模拟 Asp.net-mvc 控制器上下文

所以控制器上下文取决于一些 asp.net 内部。有哪些方法可以干净地模拟这些以进行单元测试?当我只需要例如 Request.HttpMethod 返回“GET”时,似乎很容易用大量设置阻塞测试。

我在网上看到了一些例子/助手,但有些已经过时了。认为这将是保持最新和最伟大的好地方。

我正在使用最新版本的 rhino mocks

0 投票
4 回答
63040 浏览

我什么时候应该嘲笑?

我对 mock 和 fake 对象有基本的了解,但我不确定我对何时/何地使用 mock 有感觉 - 特别是因为它适用于这里的场景

0 投票
6 回答
1663 浏览

模拟比存根好吗?

不久前,我阅读了Martin Fowler 的Mocks Aren't Stubs文章,我必须承认我有点害怕外部依赖会增加复杂性,所以我想问一下:

单元测试时使用的最佳方法是什么?

总是使用模拟框架来自动模拟被测试方法的依赖关系会更好,还是更喜欢使用更简单的机制,例如实例测试存根?