PHPUnit autoloader error: Class 'Yii' not found
PHPUnit autoloader error: Class 'Yii' not found
我正在尝试开始 PHPUnit 测试。
我正在使用 composer 加载 PHPUnit 4.5、Yii 1.1.14 和一些我们构建的自定义 Yii 包。
在这些自定义包中,我们使用 Yii class 自动加载一些设置别名的文件。
当 运行 连接我们的应用程序时,我们手动包含基本 Yii 文件,然后 运行 作曲家生成自动加载。
麻烦的是,当我们 运行 PHPUnit.. 作曲家自动加载首先获得 运行。即使使用 include:
指定 bootstrap 文件
bin/phpunit --bootstrap carcass/phpunit.bootstrap.php
导致以下异常:
Fatal error: Class 'Yii' not found
事实上,似乎自动加载 运行 甚至在解析 --
选项之前:
bin/phpunit --help
导致同样的错误。删除自动加载允许 PHPunit 运行。
有什么办法解决这个问题吗?
我尝试在我们的主 composer.json 中放置 Yii 基础文件的自动加载,但是子包的自动加载首先获得 运行.. 同样的错误。
我还尝试在每个子包中为 Yii 基础文件放置一个自动加载.. 但是当作曲家使用 require
时我们得到重新声明错误。我也不是这个选项的超级粉丝,因为它严格地定义了 Yii 定义来自哪里的子包,实际上不需要知道。
因为自动加载类映射部分 运行 在所有文件部分(包括来自子包的文件部分)之前。
将 yii 和 YiiBase 文件放在我们项目的主要 composer.json 的类映射中解决了这个问题:
"autoload": {
"classmap": [
"composer_packages/yiisoft/yii/framework/YiiBase.php",
"composer_packages/yiisoft/yii/framework/yii.php"
],
"files": [
...
]
}
我正在尝试开始 PHPUnit 测试。
我正在使用 composer 加载 PHPUnit 4.5、Yii 1.1.14 和一些我们构建的自定义 Yii 包。 在这些自定义包中,我们使用 Yii class 自动加载一些设置别名的文件。
当 运行 连接我们的应用程序时,我们手动包含基本 Yii 文件,然后 运行 作曲家生成自动加载。
麻烦的是,当我们 运行 PHPUnit.. 作曲家自动加载首先获得 运行。即使使用 include:
指定 bootstrap 文件bin/phpunit --bootstrap carcass/phpunit.bootstrap.php
导致以下异常:
Fatal error: Class 'Yii' not found
事实上,似乎自动加载 运行 甚至在解析 --
选项之前:
bin/phpunit --help
导致同样的错误。删除自动加载允许 PHPunit 运行。
有什么办法解决这个问题吗?
我尝试在我们的主 composer.json 中放置 Yii 基础文件的自动加载,但是子包的自动加载首先获得 运行.. 同样的错误。
我还尝试在每个子包中为 Yii 基础文件放置一个自动加载.. 但是当作曲家使用 require
时我们得到重新声明错误。我也不是这个选项的超级粉丝,因为它严格地定义了 Yii 定义来自哪里的子包,实际上不需要知道。
因为自动加载类映射部分 运行 在所有文件部分(包括来自子包的文件部分)之前。
将 yii 和 YiiBase 文件放在我们项目的主要 composer.json 的类映射中解决了这个问题:
"autoload": {
"classmap": [
"composer_packages/yiisoft/yii/framework/YiiBase.php",
"composer_packages/yiisoft/yii/framework/yii.php"
],
"files": [
...
]
}