测试期间在 Laravel 中重置数据库中的记录,而不是数据库本身

han*_*ock 4 php unit-testing laravel

我现在正在测试我的 Laravel 应用程序并面临下一个问题:我的项目是从一个无框架的 PHP 项目迁移而来的,该项目已经有自己的数据库,所以我没有对大多数 db 数据进行迁移。在测试期间我需要刷新我的数据库,但就我现在而言,当我使用use RefreshDatabase;我的整个数据库时正在刷新(因此表也被删除),所以 laravel 假设我每次都在迁移我的数据库表,我没有做什么。所以问题是:每个新测试是否有可能只刷新记录(我的意思是删除它们),而不是整个数据库?我用谷歌搜索了一下,不幸的是没有找到可能有帮助的东西。提前致谢!

mar*_*e96 5

如果您正在使用,Phpunit您可以使用DatabaseTransactions它会将您在测试中添加的内容添加到数据库中,然后将其删除。只需像特征一样使用它。

如果您不想创建测试数据库,可以使用以下简单方法:

<?php

use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    use DatabaseTransactions;
    ...
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到它。