【问题标题】:Continuous integration with Laravel package and Behat与 Laravel 包和 Behat 的持续集成
【发布时间】:2016-04-09 12:17:30
【问题描述】:
我正在为 Laravel 开发一个包,它实际上需要整个 Laravel 应用程序来运行我用 Behat 编写的测试。
我将 Travis 用作 CI 服务,我想知道是否有特定的 .travis.yml 配置可以让为我的包创建的测试与新创建的 Laravel 应用程序一起运行。
基本上,我的包包含控制台命令的特征,如果不安装 Laravel 本身就无法测试。
我知道我可以通过在 .travis.yml 中设置 install 挂钩来安装新的 Laravel 应用程序,但是我不知道如何将我的测试与应用程序集成并运行。
【问题讨论】:
标签:
php
laravel
laravel-5
travis-ci
behat
【解决方案1】:
我将与你分享我的 travis 配置文件(我使用的是 Laravel 5.1)。
我的文件适用于 PHPUnit,但是只需将运行 PHPUnit 的行替换为您的 Behat 命令,其他一切都很完美。
.travis.yml
language: php
php:
- 5.5.9
- 5.6
- 7.0
- hhvm
matrix:
allow_failures:
- php: hhvm
before_script:
- cp .env.travis .env
- mysql -e 'create database homestead;'
- composer self-update
- composer install --prefer-source --no-interaction --dev
- php artisan migrate
- php artisan db:seed
script: vendor/bin/phpunit
您还必须包含 .env.travis,示例文件如下所示:
APP_ENV=testing
APP_DEBUG=true
APP_KEY=xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX
DB_CONNECTION=mysql
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=sync
您当然可以使用特定的DB_CONNECTION,它可能在内存中运行 sqlite 左右..