gpt4 book ai didi

php - Laravel 黄昏 : how to use in-memory DB for testing

转载 作者:可可西里 更新时间:2023-11-01 00:28:55 25 4
gpt4 key购买 nike

我一直在尝试的是在使用 Laravel Dusk 进行测试时使用内存数据库。

这里我们有一个文件,.env.dusk.local,具有以下值。

DB_CONNECTION=sqlite
DB_DATABASE=:memory:

这是浏览器测试文件的片段。

class ViewOrderTest extends DuskTestCase
{
use DatabaseMigrations;

/** @test */
public function user_can_view_their_order()
{
$order = factory(Order::class)->create();

$this->browse(function (Browser $browser) use ($order) {
$browser->visit('/orders/' . $order->id);
$browser->assertSee('Order ABC'); //Order name
});
}
}

php artisan dusk被执行时,Dusk开始浏览器测试。

但是,Dusk 似乎正在访问我的本地数据库,因为测试浏览器上有一个订单名称只存在于我的本地数据库中,而“订单 ABC”预计会显示在浏览器上。

根据文档,Laravel Dusk 允许我们设置 the environmental variables.

To force Dusk to use its own environment file when running tests, create a .env.dusk.{environment} file in the root of your project. For example, if you will be initiating the dusk command from your local environment, you should create a .env.dusk.local file.

我不觉得 Dusk 正在访问单独的数据库。

任何建议将不胜感激。

最佳答案

在 Laravel dusk 浏览器测试时,你不能使用 :memory: 数据库。您的开发服务器和黄昏测试在不同的进程上运行。灰尘测试无法访问在开发服务器上运行的进程的内存。

创建用于测试的 sqlite 文件数据库的最佳解决方案。

'sqlite_testing' => [
'driver' => 'sqlite',
'database' => database_path('sqlite.testing.database'),
'prefix' => '',
],

在数据库文件夹中创建 sqlite.testing.database 文件。

确保在使用

运行测试之前运行开发服务器
php artisan serve --env dusk.local

关于php - Laravel 黄昏 : how to use in-memory DB for testing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48674168/

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