php - 为具有一定程度随机化的方法编写单元测试

标签 php unit-testing testing phpunit

我使用的是 PHPUnit,我的传统方法是使用由我正在测试的方法调用的模拟对象和方法。模拟对象被告知期望单元测试输入什么。问题是提供给模拟对象的部分输入是由被测试的方法随机生成的(单元测试无法知道这些是什么)。

只是想知道是否有人可以提出解决方案。

最佳答案

能否将“随机部分”注入(inject)到方法中(或者说随机性是的核心特征)?

例如(也许是一个过于简单的例子,从字面上看是“随机”)而不是

function foo($x, $y) {
  return $x * rand(1, $y);
}

使用类似的东西

function foo($x, $r) {
  return $x * $r->getNext();
}

通过这种方式,您可以在测试中尽可能多地消除“随机性”,因为您可以为 $r 传递一个对象,该对象不会真正返回随机值,但例如边缘情况。

关于php - 为具有一定程度随机化的方法编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1582901/

相关文章:

php - 警告: Cannot modify header information - headers already sent by (two headers on one page?)

java - 使用 PowerMockito 模拟 Singleton Public/Void 方法失​​败

unit-testing - 功能测试能否替代小型项目中的单元测试

ios - Xcodebuild 以不同语言运行应用程序单元测试

performance - 关于loadrunner中的web_reg_find()

PHP-字符串与数组比较

php - 存储此信息的最佳方式是什么?

javascript - 请在一种表单中与 javascript 函数相关的多个提交按钮

c# - 如何模拟自定义 ValueResolver 构造函数参数

Java 如何从另一个模拟方法调用一个方法