Mas*_*sse 11 php phpunit autoload
如何使PHPUnit尊重__autoload函数?
例如,我有这三个文件:
loader.php
function __autoload($name)
{
echo "foo\n";
require_once("$name.php");
}
Run Code Online (Sandbox Code Playgroud)
test.php的
require_once("loader.php");
class FooTest extends PHPUnit_Framework_TestCase
{
function testFoo()
{
new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
foo.php
require_once("loader.php");
new Foo();
Run Code Online (Sandbox Code Playgroud)
正如预期的php foo.php错误,说文件"Foo.php"不存在.testFoo()然而,该函数通过说没有这样的类来错误Foo,并且从不回声"foo \n"行.
edo*_*ian 23
这是预期的行为.
看到这个PHPUnit bugtracker条目: Upgrading to 3.5.10 has broken function of "autoload"
从PHPUnit 3.5开始:
PHPUnit现在使用自动加载器来加载它的类.如果测试的代码需要自动加载器,请使用spl_autoload_register()进行注册.
唯一需要的更改是添加spl_autoload_register('__autoload')引导脚本.
如果你能建议你只是将__autoload所有内容放在一起并spl_autoload_register在你的应用程序中使用,因为这是使用PHP 5代码的方法.(如果您只有一个自动加载器,则无法使用框架的自动加载器,依此类推)