利用 Codeception 和 Travis CI 来保证 Laravel 4 项目代码的可用性
说明
关于 Travis CI 的介绍, 这里有篇文章写的很好, 这里就不再重复讲了 --> PHP开源项目使用Travis CI进行持续集成 .
这篇文章主要记录 PHPHub 是如何配置上 Travis CI 的, PHPhub 用的测试是 Codeception 的 Functional Test, 下面是现在的代码测试 Status:
创建 .travis.yml
文件
language: php
php:
- 5.4
- 5.5
- hhvm
matrix:
allow_failures:
- php: hhvm
branches:
except:
- gh-pages
before_script:
- "mysql -e 'create database `phphub`;'"
- composer install -n --prefer-source
- php artisan migrate --seed -n
- ./vendor/bin/codecept build
script:
- ./vendor/bin/codecept run
配置信息可读性挺好的, 这个项目的最小支持版本为 PHP 5.4
, 这里我们让我们的测试跑在 PHP 5.4
PHP 5.5
和 HHVM
上.
在 before_script
里是一些需要提前做的事情
- 创建数据库, 用来测试;
composer install
相关的 Package 依赖,-n
代表No Interactive
, 就是没有用户交互, 不需要询问, 采用默认的意思;- 部署好数据库,
-n
同上; - codecept 在运行前需要执行
build
命令, 加载suite
里面用到的module
, 对于这个概念不熟悉的朋友请见 Modules And
Helpers.
最后一行不解释..
Travis CI 服务器后台添加项目
到了 Travis CI 首页, 右上角有 Github 帐号授权登录, 登录成功后会有类似于下面的界面:
找到你想要测试的项目, 点击开启:
本地修改点文件, 提交到 github , 这个时候, Travis CI 被 Github 的 Git Hook 触发, 自动进入测试.
遇到的问题
第一个问题 - 数据库连接
默认的 CI 数据库用户名是 root
, 密码是空, 数据库名称是 .travis.yml
里面 before_script
创建的那个数据库.
第二个问题 - Class 'Eloquent' not found ...
PHP Fatal error: Class 'Eloquent' not found in /home/travis/build/summerblue/phphub/app/models/User.php on line 10
解决方法是在 test/_bootstrap.php
写入以下代码:
require __DIR__.'/../vendor/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
$app->boot();
All set, enjoy it.
---- EOF ---
欢迎关注 LaravelTips
, 这是一个专注于为 Laravel 开发者服务, 致力于帮助开发者更好的掌握 Laravel 框架, 提升开发效率的微信公众号.