问题标签 [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.

0 投票
11 回答
1861 浏览

unit-testing - 模拟课还是真课?

使用其他类(作为成员或作为方法的参数)的类需要行为正确的实例以进行单元测试。如果您有这些类可用并且它们没有引入额外的依赖项,那么使用真实的东西而不是模拟不是更好吗?

0 投票
2 回答
3145 浏览

c# - 模拟参数的属性更改 - 使用 Moq

我正在使用 Moq 来模拟我的存储库层,以便进行单元测试。

当数据库插入成功时,我的存储库层插入方法会更新我的实体的 Id 属性。

如何配置 moq 以在调用 Insert 方法时更新实体的 Id 属性?

存储库代码:-

单元测试:-

ContractService 类(WCF 服务合同)的实现片段。

如果这些信息可能有点缺乏,我深表歉意。我今天才开始学习起订量和模拟框架。交流

0 投票
5 回答
8445 浏览

tdd - 我应该练习“mockist”还是“经典”TDD?

我已经阅读(并重新阅读)Martin Fowler 的Mocks Aren't Stubs。在其中,他定义了两种不同的 TDD 方法:“Classical”和“Mockist”。他试图回答“那么我应该成为古典主义者还是模仿者? ”这个问题,但他承认他从未在“除了玩具之外的任何东西”上尝试过模仿者 TDD。所以我想我会在这里问这个问题。好的答案可能会重复 Fowler 的论点(但希望更清楚)或添加自 Fowler 上次于 2007 年 1 月更新文章以来他没有想到的或其他人提出的论点。

0 投票
7 回答
1386 浏览

tdd - 作为一名“mockist”TDD 从业者,我是否应该在与被测方法相同的类中模拟其他方法?

在阅读 Martin Fowler 的Mocks Aren't Stubs之后,我发现我一直在以“mockist”的方式练习 TDD。

但我想知道,即使在 mockist TDD 中,如果一个人可以把嘲笑做得太过分。

这是Python 风格的伪代码的更新示例:

confirm_or_create_connection() 方法创建到服务器的连接。

我在两个测试中测试了与此类似的方法,这两个测试都模拟了 confirm_or_create_connection() 和 sync() (即使它们都是同一个类中的方法)。在一个测试中,mock confirm_or_create_connection() 返回 True 并且测试确认 sync() 被调用,而在另一个测试中 mock confirm_or_create_connection() 返回 False 并且测试确认 sync() 没有被调用。

这合理吗?或者我应该模拟 confirm_or_create_connection() 和 sync() 调用的对象?(我已经对这两种方法进行了其他测试。)

请不要通过解释我应该练习“经典” TDD 来回答这个问题。这是另一个问题的答案:我应该练习 mockist 还是经典 TDD?

0 投票
3 回答
1235 浏览

java - 如何用 final 方法模拟一个类?

说我有A类

现在我有B级

我将如何对这种方法进行单元测试?原因foo()是最终的,因为我们不希望扩展 A 的类改变其功能。但是在真正对方法进行单元测试的同时,我不希望它伸出手来运行实际的A.foo()方法。

有没有办法,比如说,删除 final 关键字并添加注释@finalUnlessTest?你会推荐什么?将 A 重构为接口将非常非常困难,因为它是我们的中心类之一,并且不幸的是非常耦合。

编辑#1对不起,忘了提,我们说的是 Java。到目前为止,我们还没有使用模拟框架。

回答好,所以:哇。JMockit简直令人难以置信,在我看来,它是测试遗留代码的杀手级应用。令人难以置信的有用,尤其是在我的情况下。非常感谢!您基本上会为我的伪示例执行以下操作:

这是他妈的酷还是什么?

0 投票
4 回答
1578 浏览

c++ - 你如何在 C++ 中模拟使用 RAII 的类

这是我的问题,我想模拟一个在初始化时创建线程并在销毁时关闭它的类。我的模拟类没有理由实际创建和关闭线程。但是,为了模拟一个类,我继承了它。当我创建模拟类的新实例时,会调用基类构造函数,从而创建线程。当我的模拟对象被销毁时,基类析构函数被调用,试图关闭线程。

如何在不必处理实际资源的情况下模拟 RAII 类?

0 投票
6 回答
503 浏览

c# - 关于单元测试的好资源?

有没有什么好的书或材料可以深入介绍使用模拟进行 C# 单元测试?

0 投票
3 回答
2998 浏览

c++ - 如何在 C/C++ 中创建 JNIEnv 模拟

我正在用 C 语言编写一些希望使用 cunit 进行测试的 JNI 代码。为了调用 JNI 函数,我需要创建一个有效的 JNIEnv 结构。

有谁知道是否有用于此目的的模拟框架,或者谁能给我一些关于如何自己创建模拟 JNIEnv 结构的指示?

0 投票
2 回答
11220 浏览

java - 如何对使用 ProcessBuilder 和 Process 的 Java 方法进行单元测试?

我有一个 Java 方法,它使用 ProcessBuilder 启动一个进程,并将其输出通过管道传输到一个字节数组中,然后在进程完成时返回它的字节数组。

伪代码:

对这种方法进行单元测试的最佳方法是什么?我还没有找到模拟 ProcessBuilder 的方法(它是最终的),即使使用非常棒的JMockit,它也会给我一个 NoClassDefFoundError:

有什么想法吗?


答案- 正如 Olaf 建议的那样,我最终将这些行重构为一个界面

我现在将这个接口的一个实例传递给我想要测试的类(在它的构造函数中),通常使用带有原始行的默认实现。当我想测试时,我只需使用接口的模拟实现。就像一个魅力,虽然我想知道我是否在这里过度接口......

0 投票
14 回答
22398 浏览

javascript - 你使用过哪些 JavaScript 单元测试和模拟框架?

我的主要 JavaScript 框架是jQuery,所以我希望我的单元测试和模拟框架与它兼容。我宁愿不必介绍另一个 JavaScript 框架。

我目前使用QUnit进行单元测试,使用Jack进行模拟,但我对 JavaScript 的整个单元测试还是很陌生。

有没有更好的工具可以推荐?什么对你有用?