我正在测试的方法如下:
function X($arg)
{
// Code ...
$object = new Object;
// Code ...
}
有没有办法模仿那个对象?
答案 0 :(得分:1)
在单元测试中没有PHPUnit Mock对象,你不能。
根据您加载课程的方式,您可以创建一个" mock"将替换该对象的类。这看起来像这样:
您的测试文件:
class Object {
<mock functionality here>
}
class TestCase extends PHPUnit_Framework_TestCase {
<your tests>
}
但是,如果您想在另一个测试中实际测试Object
,这将导致问题。在这种情况下,您将收到致命错误,指出您无法重新定义该类。 这不是最佳做法。
最好的办法是重构课程,以便使用依赖注入。更改类,使其将Object作为构造函数参数或作为方法签名的一部分。
这篇文章可能会有帮助:http://misko.hevery.com/2008/07/08/how-to-think-about-the-new-operator/