我正在开发一个CakePHP 2.x插件,该插件使用Composer来引入包依赖关系。我现在正试图使用蛋糕之友的Travis包,在插件的存储库更新时自动运行我的单元测试。
据我所知,这还不包括在我的供应商文件中加载所需的Composer自动加载文件。结果,我的测试失败了,因为第三方包中定义的类丢失了。
正如CakePHP 2的高级安装中所描述的,我试图将以下内容添加到bootstrap.php
:-
require APP . 'Vendor' . DS . 'autoload.php';
我试图通过.travis.yml
文件的before_script
来附加bootstrap.php
:-
before_script:
- git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
- ../travis/before_script.sh
- echo "require APP . 'Vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php
不幸的是,由于找不到文件APP . 'Vendor' . DS . 'autoload.php'
,因此此操作失败。(我也尝试过在APP . '..' . DS . 'Vendor' . DS . 'autoload.php'
中查找该文件)。
使用Travis安装CakePHP时,Composer autoload.php
文件位于何处?当我的测试在Travis CI上远程运行时,我如何确保我的第三方包被加载?
第三方插件的默认目录名为vendor
(小写),CakePHP有Vendor
,您可以在.../app/composer.json
中更改
{
"config": {
"vendor-dir": "Vendor" // CakePHP third party plugins dir name
},
"require": {
...
}
}
解决方案是将require
语句中的Vendor
文件夹更改为before_script
:-中的小写vendor
before_script:
- git clone https://github.com/FriendsOfCake/travis.git --depth 1 ../travis
- ../travis/before_script.sh
- echo "require APP . 'vendor' . DS . 'autoload.php';" >> ../cakephp/app/Config/bootstrap.php
完成此操作后,CakePHP正确地包含Composer自动加载文件。