在本周的文章中,我们将学习如何使用 Travis CI 设置和运行使用 MySQL 和 Laravel 的测试,这很容易,也很有教育意义,对我来说它也有一些乐趣。
让我们从我们的 ` .travis.yml` 文件开始,我们需要一些东西,`MySQL 和 PHPUnit`,因此我们将把这些东西包含在我们的初始 yaml 文件中
language: php # language
php:
- 7.0
- 7.1
services:
- mysql # will init MySQL
before_script:
- cp .env.travis .env # copying .env.travis
- mysql -e 'create database testing;' # will run this command
- composer self-update
- composer install --no-interaction
- php artisan key:generate
- php artisan migrate --seed
script:
- vendor/bin/phpunit # run PHPUnit
在这个特定的设置中,您需要仔细查看 `before_script`,这里发生着大部分的魔法。现在打开您的文本编辑器或 IDE,在本例中,我使用的是 Vim
APP_ENV=testing
APP_KEY=SomeRandomString
DB_CONNECTION=testing
DB_TEST_DATABASE=testing_db
DB_TEST_USERNAME=root
DB_TEST_PASSWORD=
CACHE_DRIVER=array
SESSION_DRIVER=array
QUEUE_DRIVER=sync
下一步是设置 `PHPUnit` 以使用测试数据库连接函数(当然,假设您使用的是 MySQL,而不是像 Redis 或 PostGRES 这样的东西(我将为这些数据库框架制作食谱),在这个例子中,我们使用 MySQL,这里有一些 XML 来测试连接
<?xml version="1.0" encoding="UTF-8"?>
<Phpunit BackupGlobals="False"
BackupStaticAttributes="False"
Bootstrap="Bootstrap/Autoload.Php"
Colors="True"
ConvertErrorsToExceptions="True"
ConvertNoticesToExceptions="True"
ConvertWarningsToExceptions="True"
ProcessIsolation="False"
StopOnFailure="False"
SyntaxCheck="False">
<Testsuites>
<Testsuite Name="Application Test Suite">
<Directory>./tests/</Directory>
</Testsuite>
</Testsuites>
<Filter>
<Whitelist>
<Directory Suffix=".Php">app/</Directory>
</Whitelist>
</Filter>
<Php>
<Env Name="APP_ENV" Value="Testing"/> <!--Make sure this matches your env var-->
<Env Name="DB_CONNECTION" Value="Testing"/>
<Env Name="CACHE_DRIVER" Value="Array"/>
<Env Name="SESSION_DRIVER" Value="Array"/>
<Env Name="QUEUE_DRIVER" Value="Sync"/>
</Php>
</Phpunit>
现在添加测试配置
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'testing' => [
'driver' => 'mysql',
'host' => env('DB_TEST_HOST', 'localhost'),
'database' => env('DB_TEST_DATABASE', 'testing_db'),
'username' => env('DB_TEST_USERNAME', 'root'),
'password' => env('DB_TEST_PASSWORD', 'secret'),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
],
完美,现在我们要使用经典流程将此代码推送到 GitHub
git init
git add .
git commit -m "Laravel push"
git remote add origin remote repository URL
git remote -v
git push -u origin master
确保此存储库与 Travis 同步,你就完成了!我希望这个食谱对你来说像对我一样愉快。