`RefreshDatabase`删除所有表

时间:2019-07-10 15:51:39

标签: database laravel testing phpunit

在Laravel / PHPunit测试类中,我向该类添加了use RefreshDatabase,我知道应该这样做,以便在测试完成时恢复对测试期间数据库的更改。

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

文档建议,在测试后让数据库还原就像我添加一行一样简单,我遗漏了什么吗?

2 个答案:

答案 0 :(得分:0)

如果您不想使用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);
    }
}

答案 1 :(得分:0)

更新您的phpunit.xml并添加这两行

<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>