Laravel忽略了测试数据库连接

sup*_*r.t 7 php testing phpunit unit-testing laravel

使用一个内存中的SQLite数据库迁移/因为它说回滚每一个测试我使用Laravel 5.3.22,想单元测试我的应用程序在这里.这是我的database.php配置的连接部分:

'mysql' => [
            'driver'    => 'mysql',
            'host'      => env('DB_HOST', 'localhost'),
            'database'  => env('DB_DATABASE', 'forge'),
            'username'  => env('DB_USERNAME', 'forge'),
            'password'  => env('DB_PASSWORD', ''),
            ...
        ],

        'testing' => [
            'driver'   => 'sqlite',
            'database' => ':memory:',
            'prefix'   => '',
        ],
Run Code Online (Sandbox Code Playgroud)

这是phpunit env配置:

<php>
    <env name="APP_ENV" value="testing"/>
    <env name="CACHE_DRIVER" value="array"/>
    <env name="SESSION_DRIVER" value="array"/>
    <env name="QUEUE_DRIVER" value="sync"/>
    <env name="DB_CONNECTION" value="testing"/>
</php>
Run Code Online (Sandbox Code Playgroud)

phpunit配置暗示laravel shoud使用"testing"sqlite连接进行测试,但它并不关心并继续使用主mysql连接.这不是一个选项,我有一个庞大而复杂的架构,它不能用于使用mysql进行单元测试.我该怎么办?我无法模拟查询构建器,因为我需要断言它的结果.

sup*_*r.t 5

我已经解决了这个问题,我一直在本地环境中使用配置缓存,并且一直在阻止Laravel使用phpunit配置。config:clear artisan命令的帮助。我也将文件缓存驱动程序更改为本地环境的数组之一。