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

c# - 模拟方法结果

我试图找到一种方法来伪造从另一个方法中调用的方法的结果。

我有一个“LoadData”方法,它调用一个单独的助手来获取一些数据,然后它会转换它(我有兴趣测试转换后的结果)。

所以我有这样的代码:

我想从 Helper.GetSomeData() 方法得到一个已知的结果。我可以使用模拟框架(我对 Rhino Mocks 的经验相当有限,但对任何事情都持开放态度)来强制实现预期结果吗?如果是这样,怎么做?

*编辑 - 是的,正如预期的那样,我无法实现我想要的破解,我必须找到一种更好的方法来设置数据。

0 投票
6 回答
10153 浏览

java - 如何模拟对象构造?

有没有办法在 Java 中使用 JMock 来模拟对象构造?

例如,如果我有这样的方法:

...有没有办法在测试方法中模拟对象构造的期望?

我希望能够期望调用某些构造函数,而不是使用额外的代码来检查类型(因为它并不总是像我的示例那样复杂和简单)。

所以而不是:

我可以期望调用某个构造函数。只是为了让它更简洁一些,并以更易读的方式表达实际正在测试的内容。

请原谅这个简单的例子,我正在处理的实际问题有点复杂,但是有期望会简化它。


更多背景知识:

我有一个简单的工厂方法,它创建包装对象。被包装的对象可能需要在测试类中难以获得的参数(它是预先存在的代码),因此很难构造它们。

也许更接近我实际寻找的是:有没有一种方法可以一举模拟整个类(使用 CGLib),而无需指定要存根的每种方法?

所以 mock 被包装在一个构造函数中,所以显然可以在上面调用方法,JMock 是否能够动态地模拟出每个方法?

我的猜测是否定的,因为那会非常复杂。但是知道我在叫错树也很有价值:-)

0 投票
2 回答
1489 浏览

unit-testing - .NET 中的单元测试:如何模拟实体数据提供者

有谁知道是否有办法模拟实体数据提供者,以便单元测试不会影响实时数据?我找到了这个博客,但似乎该项目尚未发布:

http://www.chrisdoesdev.com/index.php/archives/62

谢谢

0 投票
7 回答
20205 浏览

python - 你最喜欢的 Python 模拟库是什么?

你最喜欢的 Python 模拟库是什么?

0 投票
1 回答
1923 浏览

exception - Rhino 模拟命令回复,抛出异常问题

如果我的代码中有异常,我正在尝试实现一些重试逻辑。我已经编写了代码,现在我正在尝试让 Rhino Mocks 来模拟场景。代码的主要内容如下:

似乎发生的情况是每次都抛出异常,而不仅仅是一次。我应该将设置更改为什么?

0 投票
6 回答
4142 浏览

unit-testing - 在成熟的项目中引入测试驱动开发(TDD)是否可行?

  • 假设我们意识到 TDD 的价值为时已晚。项目已经成熟,很多客户开始使用它。
  • 假设使用的自动化测试主要是功能/系统测试,并且有大量的自动化 GUI 测试。
  • 假设我们有新的功能请求和新的错误报告(!)。如此大的发展仍在继续。
  • 请注意,已经有很多业务对象没有或很少进行单元测试。
  • 它们之间有太多的协作/关系,这又只能通过更高级别的功能/系统测试来测试。本身没有集成测试。
  • 具有大量表、视图等的大型数据库。仅仅为了实例化单个业务对象,就已经进行了大量的数据库往返。

我们如何在这个阶段引入 TDD?

嘲笑似乎是要走的路。但是我们在这里需要做的嘲笑似乎太多了。听起来需要为适用于现有东西(BO、数据库等)的模拟系统开发复杂的基础设施。

这是否意味着只有从头开始时 TDD 才是合适的方法?我很想知道在已经成熟的产品中引入 TDD 的可行策略。

0 投票
9 回答
3075 浏览

c# - 如何在没有公共构造函数的情况下模拟/伪造/存根密封 OracleException?

在我的测试中,我需要测试抛出 OracleException 时会发生什么(由于存储过程失败)。我正在尝试将 Rhino Mocks 设置为

然而,无论出于何种原因,OracleException 似乎被密封而没有公共构造函数。我能做些什么来测试这个?

编辑:这正是我要实例化的内容:

0 投票
2 回答
582 浏览

database - 在哪些情况下,您会针对内存数据库而不是开发数据库进行测试?

您何时针对内存数据库与开发数据库进行测试?

另外,作为一个相关的附带问题,当您使用开发数据库时,您是使用个人开发数据库、集成开发数据库还是两者都使用?

此外 ++,对于单元测试,您何时使用内存数据库而不是模拟您的存储库/DAL 等?

0 投票
2 回答
546 浏览

.net - 如何为使用 winforms 的控制器类编写单元测试?

有没有人能够成功地对必须耦合到 System.Windows.Forms.Form 类的方法进行单元测试?

我最近一直在开发 C# winforms 应用程序,尝试使用 MVC 结构构建它。这已经够难了,因为框架并没有真正考虑到这一点。

但是,当您将单元测试加入其中时,它会变得更加困难。我一直在确保我的控制器没有耦合到具体的视图类,以便我可以使用存根/模拟进行单元测试。但是在某处引用 Form 类是不可避免的,这些方法确实需要测试。

我一直在使用Moq,因为它有一些很好的类型安全特性,并且允许模拟具体类型。但不幸的是,它不允许我“期望”调用既不是虚拟也不是抽象的具体类型的方法或属性。而且由于 Form 类在构建时没有考虑到子类化,所以这是一个大问题。例如,我需要能够模拟 Form 类以防止创建真正的窗口,例如通过“预期”ShowDialog。

因此,我无法运行任何与 Form 的子类进行大量交互的单元测试,我的观点是。

有没有人成功地对这种类型的代码进行了单元测试?你是怎么做到的?

这是其他模拟框架可以解决的问题吗?其他模拟框架使用的基于字符串的方法是否会受到相同的约束?我可以编写自己的显式长手模拟类,还是缺少虚拟成员会阻止我也能够以这种方式抑制窗口行为?

或者是否有某种我没有想到的方法来构建我的类,以便表单耦合代码最终以简单复杂的方法和类结束,这样我就可以在不明确对它们进行单元测试的情况下逃脱,而不会被我的良心打败为了它?

0 投票
3 回答
5484 浏览

c# - 模拟不是接口的类

我一直在用 C# 编写一些从 providerbase 类继承的提供程序。我发现很难编写使用提供程序的测试,因为大多数模拟框架只允许你模拟一个接口。

有没有办法模拟对从提供程序库继承的提供程序的调用?

如果没有,是否有一种模式可以用来实现对提供者的模拟?