【问题标题】:laravel phpunit - why are tests refreshing the live databaselaravel phpunit - 为什么测试刷新实时数据库
【发布时间】:2019-03-09 15:31:53
【问题描述】:

我有一个 laravel 项目有一个问题,这意味着每当我运行测试时,db 数据库都会被刷新(我使用的是use RefreshDatabase;),而不是 test-db 数据库。

这真的很令人困惑,因为一切看起来都很好 - 我看不出我错过了什么。

当我运行 dd(app()->environment()); 时,它会显示“正在测试”,所以我希望 db-test 数据库会被刷新。

我正在使用 phpstorm,但我认为这不是问题。

这里是(清理过的)env 文件:

DB_HOST=127.0.0.1
DB_DATABASE=db
DB_USERNAME=root
DB_PASSWORD=

TEST_DB_HOST=127.0.0.1
TEST_DB_DATABASE=test-db
TEST_DB_USERNAME=root
TEST_DB_PASSWORD=

(已清理)config/database.php:

    'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'db'),
        'username' => env('DB_USERNAME', 'root'),
        'password' => env('DB_PASSWORD', ''),
        // other settings
    ],

    'test-mysql' => [
        'driver' => 'mysql',
        'host' => env('TEST_DB_HOST', 'localhost'),
        'port' => env('TEST_DB_PORT', '3306'),
        'database' => env('TEST_DB_DATABASE', 'test-db'),
        'username' => env('TEST_DB_USERNAME', 'root'),
        'password' => env('TEST_DB_PASSWORD', ''),
        // other settings
    ],

还有(经过清理的)phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/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>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="APP_URL" value="http://app.localhost"/>
        <env name="DB_CONNECTION" value="test-mysql"/>
        <env name="MAIL_DRIVER" value="log"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="QUEUE_DRIVER" value="sync"/>
    </php>
</phpunit>

有没有人知道这可能是什么或下一步在哪里检查?

【问题讨论】:

  • 似乎都正确,您是否尝试使用php artisan config:clear 清除配置
  • @Remul 试过了,没用
  • 如果您在 phpstorm 中运行测试,请确保 phpstorm 使用正确的 phpunit 配置文件。对我来说,它在:“设置 > 语言和框架 > PHP > 测试框架 > 你的配置 > 测试运行器”。 “默认配置文件”应该有正确的路径。
  • @Remul 是的,就是这样!我添加了我的 phpunit.xml 文件的路径,现在它工作正常!谢谢!如果您想将其添加为答案,我将接受它为正确的。

标签: laravel testing phpunit


【解决方案1】:

确保 phpstorm 使用正确的 phpunit 配置文件:

设置 > 语言和框架 > PHP > 测试框架 > 你的 配置 > 测试运行器。

Default configuration file 应该有正确的路径。

【讨论】:

  • 我将路径添加到我的 phpunit.xml 文件并且它工作了 - 一位同事遇到了同样的问题,但修复方法相同
猜你喜欢
  • 2022-10-25
  • 1970-01-01
  • 2017-01-16
  • 1970-01-01
  • 2011-05-08
  • 2021-09-14
  • 2018-08-09
  • 2021-04-10
  • 2012-02-05
相关资源
最近更新 更多