首页 > 解决方案 > 在测试期间重置 Laravel 数据库中的记录,但不重置数据库本身

问题描述

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

标签: phplaravelunit-testing

解决方案


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

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

<?php

use Illuminate\Foundation\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    use DatabaseTransactions;
    ...

您可以在docs中找到更多相关信息。


推荐阅读