运行 Laravel 测试后我的数据库为空

Nat*_*Vss 5 phpunit laravel

每次我运行测试时

php artisan test

当我想查看数据库中插入的数据时,表完全是空的。

这是我的测试

class ExampleTest extends TestCase
{

    use RefreshDatabase;

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $ad = new Ad();
        $ad->name = 'test';
        $ad->price = 100000;
        $ad->save();
        $this->assertTrue($ad->id > 0);
        var_dump($ad->id);
    }

}
Run Code Online (Sandbox Code Playgroud)

测试验证数据库是否正确生成了id,每次结果都是正确的。

从我的角度来看,特征 RefreshDatabase 会在每次测试之前刷新数据库,而不是之后......这怎么可能?

注意:我确信我正在检查正确的数据库,因为如果我删除use RefreshDatabase我可以看到记录。

精确:

RefreshDatabase如果我不使用DatabaseTransactions,我可以在运行测试后看到记录。我无法理解它......

小智 5

我假设您RefreshDatabase已经在使用。

首先要检查的是 phpunit.xml 文件及其数据库设置。它应该是一个内存数据库。

第二件事是检查您是否在开发环境中缓存配置。

第一次只运行php artisan config:clear一次。然后运行您的测试。

注意:不要缓存本地开发的配置。