在测试套件之前迁移内存sqlite中的数据库

use*_*329 6 sqlite testing laravel

我有一个laravel项目的测试者。现在,我使用磁盘文件进行测试。

问题:有没有一种方法可以在启动测试套件之前使用内存数据库并仅迁移数据库一次?

需要说明的是:我只想迁移数据库一次。我将进行超过100项测试,并且只希望执行一次迁移

Sky*_*lit 0

在您的TestCase.php(或在任何其他测试中,如果您只想在该测试中使用内存数据库)您可以重写setUp()方法

public function setUp()
{
    parent::setUp();

    $this->app['config']->set('database.default', 'testing');
    $this->app['config']->set('database.connections.testing', [
        'driver' => 'sqlite',
        'database' => ':memory:',
        'prefix' => ''
    ]);
}
Run Code Online (Sandbox Code Playgroud)

Illuminate\Foundation\Testing\DatabaseMigrations您也可以在测试类主体中使用。在这种情况下,php artisan migrate:refresh将在每次测试之前调用

<?php

use Illuminate\Foundation\Testing\DatabaseMigrations;

class ExampleTest extends TestCase
{
    use DatabaseMigrations;

    // ...
    // test cases
    // ...
}
Run Code Online (Sandbox Code Playgroud)