Laravel phpunit - 为什么测试刷新实时数据库



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

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

当我运行dd(app()->environment());时,它显示"测试",所以我希望数据库测试数据库得到刷新。

我正在使用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=

(已净化(配置/数据库.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>

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

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

>语言和框架> PHP> 测试框架>您的设置 配置>测试运行程序。

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

最新更新