gpt4 book ai didi

laravel - 使用 phpunit 在 Laravel 中测试多个数据库

转载 作者:行者123 更新时间:2023-11-28 20:34:37 31 4
gpt4 key购买 nike

在我的应用程序中,我进行了使用 Sqlite 和播种来覆盖我的功能的测试。所以我的 phpunit env 值设置为:

<env name="DB_DEFAULT" value="sqlite" />

但是,我还希望我的一小部分测试能够查看我当前的数据库数据。因此,在 1 个测试文件中,连接到我的 MySQL 连接。

这样做的原因是我想检查我的一个表中是否有所有记录的图像,因此测试需要访问最新数据,在这种情况下虚拟数据无济于事。

我想我可以使用以下方法连接:

$pdo = DB::connection('mysql')->getPdo();

但是,只有当我在这里指定“sqlite”时,测试才会连接,这是我的 sqlite 连接的名称。

我想做的测试不是基于模型,所以我不想在我的模型文件中内置解决方案,如果可能的话,我想只在这 1 个测试文件中切换数据库。

如何配置少量测试以使用不同的数据库连接,即现有的 MySQL 连接?

最佳答案

所以,我无法连接的原因是因为我的 .env.testing 文件中没有 DB_ 值。 mysql 连接随后使用 Laravel 配置默认值,因此连接没有错误。

.env.testing

DB_DEFAULT=mysql
DB_HOST=database
DB_NAME=my_database_name
DB_USER=root
DB_PASS=root

添加上面的行让一切正常,现在我的测试文件可以访问当前的本地数据库。

public function __construct()
{
$this->imgPath = dirname(__FILE__, 3) . '/public/images/';
}

public function testImages()
{
$items = DB::connection('mysql')
->select(DB::raw('SELECT image_filename FROM items')
);

foreach ($items as $item) {
$this->assertFileExists($this->imgPath . $item->image_filename . '.jpg');
}
}

关于laravel - 使用 phpunit 在 Laravel 中测试多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59382581/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com