2015-11-16 61 views
1

我正在尝试启动PHPUnit测试。PHPUnit autoloader错误:未找到'Yii'类

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

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

麻烦的是,当我们运行PHPUnit时,作曲家自动加载首先运行。指定与引导文件,即使包括:

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

通往以下异常:

Fatal error: Class 'Yii' not found 

事实上它出现在自动加载的运行--选项解析甚至在:

bin/phpunit --help 

导致相同的错误。删除autoloads允许PHPunit运行。

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

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

我也尝试在每个子软件包中放置一个Yii基本文件的自动加载...但是随后出现重新声明错误,因为作曲者使用require。我也不是这个选项的忠实粉丝,因为它严格定义Yii定义来自哪些子包,而这些子包并不需要知道。

回答

3

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

配售警予和YiiBase文件在我们项目的主要composer.json的类映射解决了这个问题:

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