利用 Codeception 和 Travis CI 来保证 Laravel 4 项目代码的可用性

说明

关于 Travis CI 的介绍, 这里有篇文章写的很好, 这里就不再重复讲了 --> PHP开源项目使用Travis CI进行持续集成 .

这篇文章主要记录 PHPHub 是如何配置上 Travis CI 的, PHPhub 用的测试是 CodeceptionFunctional Test, 下面是现在的代码测试 Status:

Build 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.5HHVM 上.

before_script 里是一些需要提前做的事情

  1. 创建数据库, 用来测试;
  2. composer install 相关的 Package 依赖, -n 代表 No Interactive, 就是没有用户交互, 不需要询问, 采用默认的意思;
  3. 部署好数据库, -n 同上;
  4. 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 框架, 提升开发效率的微信公众号.

本帖已被设为精华帖!
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!