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

时间:2016-08-23 15:16:46

标签: sqlite laravel testing

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

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

要明确:我只想迁移数据库一次。我将有更多的100个测试,我只想执行一次迁移

1 个答案:

答案 0 :(得分:1)

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' => ''
    ]);
}

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

<?php

use Illuminate\Foundation\Testing\DatabaseMigrations;

class ExampleTest extends TestCase
{
    use DatabaseMigrations;

    // ...
    // test cases
    // ...
}