微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

名称空间 – 为什么在phpunit测试中没有加载名称空间自动加载类?

为了赞美PHPunit,autoload和namespace之间现有的大杂烩安排是这样的:

我创建了一个运行PHPUnit测试并使用命名空间自动加载的简单测试项目.我在bootstrap文件注册自动加载,如下所示:

set_include_path(get_include_path() . PATH_SEParaTOR . "/path/to/classes/folder");
spl_autoload_register();

在单元测试中,我加载并测试我的类,如下所示:

$obj = new \some\space\someClass(); // which is in the classes/some/space folder
$this->assertTrue($obj->foo()=='bar');

我收到一个错误

Fatal error: Class ‘\some\space\someClass’ not found in testSomeClass.PHP

解决方法:

虽然这不是特定于PHPunit的,但您需要更改:

spl_autoload_register();

spl_autoload_register('spl_autoload');

注册自动装带器的任何其他组件都会注销认的__autoload().

If your code has an existing __autoload function then this function must be explicitly registered on the __autoload stack. This is because spl_autoload_register() will effectively replace the engine cache for the __autoload function by either spl_autoload() or spl_autoload_call().

所以这就是spl-autoload与其他使用自动加载的东西一起工作的方式.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐