gpt4 book ai didi

php - 为 Laravel 测试在数据库中播种和删除数据的正确方法?

转载 作者:行者123 更新时间:2023-12-05 03:03:28 26 4
gpt4 key购买 nike

我是 Laravel 测试的新手,我目前正在构建我的测试,因此他们使用我数据库中的某些数据来检查 HTTP 请求是否完成了适当的工作。我试图弄清楚如何在运行测试之前将数据“播种”到我的数据库中,但在所有测试完成后删除这些数据(成功或失败,无论如何都应该被删除)。

我试图通过阅读互联网上的一些文章来了解如何正确地做到这一点,但就是找不到适合我的解决方案。

我知道在 node.js 中,Mocha 测试有一个“beforeEach”来在每次测试之前操作数据,PHP Laravel 中是否有类似的选项?

最佳答案

如果 laravel 版本高于 5.5,您可以在测试中使用 RefreshDatabase 特性,这将在测试运行后重置您的数据库。您所要做的就是将它添加到测试的顶部,如下所示

namespace Tests\Feature;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithoutMiddleware;

class YourModelNameTest extends TestCase
{
use RefreshDatabase;


public function setUp()
{
parent::setUp();

// This will run all your migration
Artisan::call('migrate');

// This will seed your database
Artisan::call('db:seed');

// If you wan to seed a specific table
Artisan::call('db:seed', ['--class' => 'TableNameSeeder ', '--database' => 'testing']);
}

}

RefreshDatabase 特征定义了refreshDatabase,它在每次测试前后迁移数据库。你可以在这里看到代码

RefreshDatabse refreshDatabase

关于php - 为 Laravel 测试在数据库中播种和删除数据的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53901985/

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