PHPUnit自动加载器错误:找不到类'Yii'

时间:2015-11-16 15:55:48

标签: yii phpunit composer-php yii1.x

我正在尝试启动PHPUnit测试。

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

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

麻烦的是,当我们运行PHPUnit时...作曲家自动加载首先运行。即使使用include:

指定引导文件也是如此
bin/phpunit --bootstrap carcass/phpunit.bootstrap.php  

导致以下异常:

Fatal error: Class 'Yii' not found 

事实上,即使在解析--选项之前,自动加载也会运行:

bin/phpunit --help 

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

这有什么办法吗?

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

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

1 个答案:

答案 0 :(得分:3)

由于autoload classmap部分首先在所有文件部分(包括子包中的部分)之前运行。

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

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