【发布时间】:2019-08-05 05:48:30
【问题描述】:
我需要使用单独的数据库运行测试
我使用 POSTGRESQL 作为数据库驱动程序。
我的配置/database.php
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5432'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
],
专门用于运行测试我在 phpunit.xml 中定义了DB_DATABASE
<php>
<env name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="MAIL_DRIVER" value="array"/>
<env name="TELESCOPE_ENABLED" value="false"/>
...
<env name="DB_DATABASE" value="database_test"/>
</php>
但是当我运行我的 PHPUnit 测试时,我得到了错误
PDOException: SQLSTATE[08006] [7] FATAL: 数据库“database_test”不存在
【问题讨论】:
-
我建议遵循以下@thisiskelvin 的方法。但是,如果仍然想使用您的方法,您只需要在运行测试之前在 postgres 中创建
database_test数据库即可。
标签: postgresql laravel-5 phpunit