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 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。