我使用的是 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/