`RefreshDatabase` 删除所有表

cb7*_*cb7 5 database testing phpunit laravel

在我添加use RefreshDatabase到该类中的 Laravel/PHPunit 测试类中,我理解这应该使测试期间对数据库的更改在测试完成时恢复。

但是每当我在课堂上运行测试时,数据库中的所有表都会被删除,并且测试失败(因为这些表不存在!)。

文档建议在测试后恢复数据库就像添加一行一样简单,我是否遗漏了什么?

mat*_*ard 5

如果您不想使用 RefreshDatabase 擦除和重建数据库,您可以简单地使用 DatabaseTransactions 特性。这将回滚测试期间所做的任何更改。

<?php

namespace Tests\Unit;

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

class ExampleTest extends TestCase
{
    use DatabaseTransactions;

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}
Run Code Online (Sandbox Code Playgroud)