在 Laravel 中使用 MySQL 进行测试

分享此内容
分享此内容

在本周的文章中,我们将学习如何使用 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 同步,你就完成了!我希望这个食谱对你来说像对我一样愉快。

© 版权所有 2024,保留所有权利
© 版权所有 2024,保留所有权利
© 版权所有 2024,保留所有权利