问题标签 [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.
unit-testing - Rhino Mocks - How can I test that at least one of a group of methods is called?
Say I have an interface IFoo which I am mocking. There are 3 methods on this interface. I need to test that the system under test calls at least one of the three methods. I don't care how many times, or with what arguments it does call, but the case where it ignores all the methods and does not touch the IFoo mock is the failure case.
I've been looking through the Expect.Call documentation but can't see an easy way to do it.
Any ideas?
c# - 与 Rhino Mocks 一起使用的最佳样式/语法是什么?
使用 Rhino Mocks 时,存在多种编写单元测试的方法:
- 标准语法
- 记录/重播语法
- 流利的语法
什么是最理想最无摩擦的方式?
java - EasyMock:如何在没有警告的情况下创建泛型类的模拟?
编码
给我一个警告“类型安全:SomeClass 类型的表达式需要未经检查的转换才能符合 SomeClass<Integer>”。
unit-testing - Mocks 是如何使用的?
当我最初被介绍给 Mocks 时,我觉得主要目的是模拟来自外部数据源的对象。这样我就不必维护一个自动化的单元测试测试数据库,我可以伪造它。
但现在我开始以不同的方式思考它。我想知道 Mocks 是否更有效地用于将测试方法与其外部的任何东西完全隔离开来。不断浮现在脑海中的图像是您绘画时使用的背景。你想防止油漆弄脏所有东西。我只是在测试那个方法,我只想知道它对这些伪造的外部因素有何反应?
这样做似乎非常乏味,但我看到的优势是当测试失败时,这是因为它被搞砸了,而不是 16 层。但是现在我必须进行 16 次测试才能获得相同的测试覆盖率,因为每个部分都将单独测试。此外,每个测试都变得更加复杂,并且与它正在测试的方法联系更紧密。
这对我来说是正确的,但它也似乎很残酷,所以我有点想知道其他人的想法。
java - 在 Java 中模拟静态块
我对 Java 的座右铭是“仅仅因为 Java 有静态块,并不意味着你应该使用它们。” 撇开玩笑不谈,Java 中有很多技巧让测试成为一场噩梦。我最讨厌的两个是匿名类和静态块。我们有很多使用静态块的遗留代码,这些是我们推动编写单元测试的恼人点之一。我们的目标是能够以最少的代码更改为依赖此静态初始化的类编写单元测试。
到目前为止,我对同事的建议是将静态块的主体移动到私有静态方法中并调用它staticInit
。然后可以从静态块中调用此方法。对于依赖于这个类的另一个类的单元测试,可以很容易地staticInit
用JMockit模拟不做任何事情。让我们看看这个例子。
将改为
这样我们就可以在JUnit中执行以下操作。
然而,这种解决方案也有其自身的问题。您不能在同一个 JVM 上运行DependentClassTest
和运行,ClassWithStaticInitTest
因为您实际上希望静态块运行ClassWithStaticInitTest
.
完成这项任务的方法是什么?或者任何更好的、非基于 JMockit 的解决方案,您认为它们会更干净?
.net - 你会费心去模拟 StreamReader 对象吗?
我使用流阅读器导入一些数据,目前我在测试中硬编码一个小样本文件来完成这项工作。
将 Mock Objects 用于此以及如何使用是否明智?
delphi - 您如何对与第三方 COM 对象交互和实例化的代码进行单元测试?
目前阻碍我全力投入单元测试的最大问题之一是,我编写的代码中有很大一部分严重依赖来自不同来源的第三方 COM 对象,这些对象也倾向于相互交互(I'如果您需要知道,我会使用几个帮助程序库为 Microsoft Office 编写加载项)。
我知道我可能应该使用模拟对象,但在这种情况下我该怎么做呢?我可以看到,当我只需要传递对已经存在的对象的引用但我的一些例程自己实例化外部 COM 对象,然后有时将它们传递给来自不同库的其他一些外部 COM 对象时,这相对容易。
这里的最佳实践方法是什么?我是否应该让我的测试代码临时更改注册表中的 COM 注册信息,以便测试代码将实例化我的模拟对象之一?我应该注入修改后的类型库单元吗?还有哪些其他方法?
我会特别感谢 Delphi 的示例或工具,但也会对更一般的建议和更高级别的解释感到满意。
谢谢,
奥利弗
c# - 最佳模拟库
哪个是 C# 3.0/ASP.NET MVC 的最佳模拟库?为什么?
unit-testing - 对象模拟是否被广泛使用?
我很好奇你们中有多少人将对象模拟(JMock、NMock、RhinoMocks 等框架与单元测试框架携手并进)到您的日常开发过程中。你有什么经验?
你看,我在 GIS(地理信息系统)平台上进行开发,其中大部分工作都与某种处理数据的方式有关。由于它的数据对象模型相当复杂(许多类和接口,都是基于 COM 的),模拟起来也相当困难和麻烦。在这种情况下,模拟在编写测试套件时会产生大量开销。我想知道是否有类似情况的人,或者只是,嘲笑(在任何情况下)对你有什么作用。
java - 将 jmockit 期望与匹配器和原始类型一起使用
我正在使用 jmockit 进行单元测试(使用 TestNG),并且我在使用 Expectations 类来模拟一个使用匹配器将原始类型(布尔值)作为参数的方法时遇到了麻烦。这是一些说明问题的示例代码。
包含对 invokeReturning(...) 的调用的行会引发 NullPointerException。
如果我将此调用更改为不使用匹配器,如下所示:
它工作得很好。这对我没有好处,因为在我的真实代码中,我实际上是在模拟一个多参数方法,我需要在另一个参数上使用匹配器。在这种情况下,Expectations 类要求所有参数都使用匹配器。
我很确定这是一个错误,或者可能无法将 Matchers 与原始类型一起使用(这会让我感到难过)。有没有人遇到过这个问题,并且知道如何解决它?