我有一个laravel项目的测试套件。现在我使用磁盘文件进行测试。
问题:在启动测试套件之前,有没有办法可以使用内存数据库并只迁移一次数据库?
要明确:我只想迁移数据库一次。我将有更多的100个测试,我只想执行一次迁移
答案 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
// ...
}