yii - PHPUnit 自动加载器错误 : Class 'Yii' not found

标签 yii phpunit composer-php yii1.x

我正在尝试开始 PHPUnit 测试。

我正在使用 Composer 加载 PHPUnit 4.5 、 Yii 1.1.14 和我们构建的一些自定义 Yii 包。 在这些自定义包中,我们自动加载一些使用 Yii 类设置一些别名的文件。

运行我们的应用程序时,我们手动包含基本 Yii 文件,然后运行 ​​Composer 生成的自动加载。

问题是,当我们运行 PHPUnit 时,composer 自动加载会首先运行。即使使用 include 指定引导文件:

bin/phpunit --bootstrap carcass/phpunit.bootstrap.php  

导致以下异常:

Fatal error: Class 'Yii' not found 

事实上,似乎自动加载甚至在解析 -- 选项之前就已运行:

bin/phpunit --help 

导致同样的错误。删除自动加载允许 PHPunit 运行。

有什么办法可以解决这个问题吗?

我尝试在我们的主composer.json中放置Yii基本文件的自动加载,但是子包的自动加载首先运行..同样的错误。

我还尝试在每个子包中放置 Yii 基本文件的自动加载..但是当 Composer 使用 require 时,我们得到了重新声明错误。我也不是这个选项的 super 粉丝,因为它严格定义了 Yii 定义从哪里来的子包,而这些子包并不真正需要知道。

最佳答案

由于自动加载类映射部分先于所有文件部分(包括子包中的文件部分)运行。

将 yii 和 YiiBase 文件放置在我们项目的主composer.json 的类映射中解决了这个问题:

"autoload": {  
    "classmap": [  
        "composer_packages/yiisoft/yii/framework/YiiBase.php",  
        "composer_packages/yiisoft/yii/framework/yii.php" 
    ], 
    "files": [ 
        ... 
    ] 
}

关于yii - PHPUnit 自动加载器错误 : Class 'Yii' not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33739457/

相关文章:

php - 拉维尔 5 : Fatal error: Class 'TestCase' not found in

拉维尔 4 : Installation error on Windows 8 XAMPP/WAMP

php - GCP with Composer 运行 PHP 失败,无法识别 'app'

php - Yii 不明白如何记录消息

php - Yii 将其他扩展与 dcclassified 合并

php - 使用 Yii 的 CDbCriteria 的比较方法与空字符串

PhpUnit 模拟 : function undefined

PHPUnit 在应该为 200 时返回 404

php - 为什么我的 composer.json 在 composer 安装后自动删除或丢失?

php - 从 php 代码创建一个 cytoscape 树