5.数据库配置

未匹配的标注

本系列文章为laracasts.com 的系列视频教程——Testing Laravel 的学习笔记。若喜欢该系列视频,可去该网站订阅后下载该系列视频,支持正版

本节说明

  • 对应第 5 小节:A Testing Database Connection

本节内容

本节我们来学习如何为测试环境配置不同的数据库,以便于让我们分离开发跟测试流程。需要说明的是,在 Laravel 5.7 的版本中,默认的数据库连接方式是mysql,但是我们仍然可以使用sqlite数据库进行开发跟测试,假如你没有安装mysql的服务或者其他什么原因的话。首先我们需要修改.env文件:

我们删除了以下形如DB_XXXX的配置信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USERNAME=homestead
DB_PASSWORD=secret

然后我们需要修改数据库配置文件:

config\database.php

<?php

return [

    'default' => env('DB_CONNECTION', 'sqlite'),

    'connections' => [

        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'sqlite_testing' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database_testing.sqlite')),
            'prefix' => '',
        ],
        .
        .
]

我们在前面几节的数据库使用的是mysql进行开发,sqlite进行测试,现在我们统一使用sqlite进行开发跟测试,但是分别使用不同的数据库。所以相应地,我们需要修改测试的配置文件:

phpunit.xml

.
.
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="DB_CONNECTION" value="sqlite_testing"/>
        <env name="BCRYPT_ROUNDS" value="4"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_CONNECTION" value="sync"/>
        <env name="MAIL_DRIVER" value="array"/>
    </php>
</phpunit>

修改成sqlite数据库后,你需要新建database.sqlitedatabase_testing.sqlite文件,用以存储数据:

$ touch database/database.sqlite
$ touch database/database_testing.sqlite

然后运行迁移:

$ php artisan migrate

运行之后你就可以打开数据库查看表了:
file
现在运行全部测试:
file

但是,本节的目的在于仅仅了解不同的数据库是如何设置的。所以我们仍然会延续前面几节的配置进行开发跟测试,所以本节的修改需要取消掉,恢复到我们之前的配置。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。