php - Laravel 忽略测试数据库连接

标签 php laravel unit-testing testing phpunit

我使用 Laravel 5.3.22 并希望使用内存中的 sqlite 数据库对我的应用程序进行单元测试,为每个测试迁移/回滚,正如所说 here .这是我的 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'   => '',
        ],

这是 phpunit 环境配置:

<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>

phpunit 配置意味着 laravel 应该使用“测试”sqlite 连接进行测试,但它不关心并继续使用主要的 mysql 连接。这不是一个选项,我有一个大而复杂的模式,它不能用于 mysql 的单元测试。我该如何进行?我无法模拟查询生成器,因为我需要断言它的结果。

最佳答案

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

关于php - Laravel 忽略测试数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40845346/

相关文章:

PHP古特。没有 "value"字段的选择按钮

php - jquery .append() 不适用于我的 html

javascript - 如何在 Web 应用程序中使用条码扫描器

java - 如何在 ArchUnit 规则中排除某个类?

php - gdb 显示奇怪的无符号线程导致 SIGSEGV - 它是什么?

Laravel 5.3 在策略失败时传递 AuthorizationException 消息

php - 如何制作具有可编辑数据库结构的应用程序

java - Easymock:匹配器调用的使用超出预期

java - DbUnit + springtestdbunit 中的表计数错误

php - 基于条件的sql查询结果