gpt4 book ai didi

php - __autoload 在使用 PHPUnit 进行测试时不受尊重

转载 作者:可可西里 更新时间:2023-10-31 22:07:18 24 4
gpt4 key购买 nike

如何让 PHPUnit 遵守 __autoload 函数?

例如我有这三个文件:

加载器.php

function __autoload($name)
{
echo "foo\n";
require_once("$name.php");
}

测试.php

require_once("loader.php");

class FooTest extends PHPUnit_Framework_TestCase
{
function testFoo()
{
new Foo();
}
}

foo.php

require_once("loader.php");
new Foo();

正如预期的那样 php foo.php 出错了,说文件“Foo.php”没有存在。 testFoo() 函数会出错,说有没有 Foo 这样的类,并且从不回显“foo\n”行。

最佳答案

这是预期的行为。

请参阅此 PHPUnit 错误跟踪器条目:Upgrading to 3.5.10 has broken function of "autoload"

从 PHPUnit 3.5 开始:

PHPUnit now uses an autoloader to load its classes. If the tested code requires an autoloader, use spl_autoload_register() to register it.

快速修复:

唯一需要更改的是在 Bootstrap 脚本中添加 spl_autoload_register('__autoload')

更长的修复:

如果可以的话,我建议您一起摆脱 __autoload 并使用 spl_autoload_register在您的应用程序中,因为这是使用 PHP 5 代码的方式。 (如果你只有一个自动加载器你就不能使用你的框架的自动加载器等等)

关于php - __autoload 在使用 PHPUnit 进行测试时不受尊重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6612413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com