【问题标题】:PHPUnit autoloader error: Class 'Yii' not foundPHPUnit 自动加载器错误:找不到类“Yii”
【发布时间】:2016-02-17 19:00:39
【问题描述】:

我正在尝试开始 PHPUnit 测试。

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

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

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

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

导致以下异常:

Fatal error: Class 'Yii' not found 

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

bin/phpunit --help 

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

有没有办法解决这个问题?

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

我还尝试在每个子包中为 Yii 基本文件放置一个自动加载功能。但是当作曲家使用 require 时,我们会收到重新声明错误。我也不是这个选项的忠实拥护者,因为它严格定义了 Yii 定义的来源以及实际上不需要知道的子包。

【问题讨论】:

    标签: yii phpunit composer-php yii1.x


    【解决方案1】:

    因为自动加载类映射部分在所有文件部分(包括来自子包的部分)之前首先运行。

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

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

    【讨论】:

      猜你喜欢
      • 2018-04-29
      • 2016-04-16
      • 2017-01-02
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2015-09-05
      相关资源
      最近更新 更多