在laravel中设置测试环境

pdtvr36n  于 2023-03-04  发布在  其他
关注(0)|答案(2)|浏览(128)

我想知道是否可以在laravel中设置测试环境,数据库在您的PC中不存在,例如,我有mysql数据库,我想在mysqllite中设置测试,如果不可能,我如何在laravel中设置测试环境,mysql数据库?
当我尝试这个:

'sqlite_testing' => [
     'driver' => 'sqlite',
     'database' => ":memory:",
],

我得到这个错误:

Illuminate\Database\QueryException: could not find driver (Connection: sqlite_testing, SQL: select * from sqlite_master where 
type = 'table' and name = migrations)
kgsdhlau

kgsdhlau1#

'mysql_testing' => [
            'driver' => 'mysql',
            'database' => "testing_db",
            'host' => env('DB_HOST', '127.0.0.1'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
        ],

我想要database.php文件,并像这样设置mysql环境,在phpmyadmin中创建一个名为testing_db的数据库,它工作正常,结果是您无法在不在本地环境中的数据库上运行测试

bwleehnv

bwleehnv2#

我不知道你是怎么得出这个结论的,但是当执行单元测试时,确实有方法使用另一个只测试数据库,而且你不必为测试创建一个新的驱动程序配置。
在你的项目根目录下创建一个.env.testing,它还允许你使用不同的主机,用户名或数据库进行测试,就像你设置一个普通的.env一样简单。

# In .env.testing file
... 
DB_CONNECTION=mysql  # Also allow you to using different driver for testing.
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb   # You can set testing database here.
DB_USERNAME=root
DB_PASSWORD=
...

Laravel已设置完成PHPUnit xml配置,运行测试时将尝试加载.env.testing,如果没有.env.tesing,将加载.env,您可以在此处找到更多详细信息:https://laravel.com/docs/10.x/testing#the-env-testing-environment-file

相关问题