使用我的laravel应用程序,我有一堆迁移和db种子数据。
在app/config/testing/database.php
中,我设置了一个用于测试的mysql数据库。
我用migrate
和db:seed
命令填充了测试数据库,指定了测试环境。
这很好用,但我想在每次运行phpunit
时调用这些命令。如果它在setUp中执行,则只要在每次测试时调用它就会花费很长时间。
我也可以在setUpBeforeClass
中调用它,这更好,但如果我测试10个课程则更长。
当我运行phpunit
?
答案 0 :(得分:6)
现在我已经在tests / TestCase.php
中完成了这项工作class TestCase extends Illuminate\Foundation\Testing\TestCase {
public static $setupDatabase = true;
public function setUp()
{
parent::setUp();
if(self::$setupDatabase)
{
$this->setupDatabase();
}
}
public function setupDatabase()
{
Artisan::call('migrate');
Artisan::call('db:seed');
self::$setupDatabase = false;
}
....
这似乎有效,但感觉并不理想,但意味着如果我需要重置它以进行测试,我可以轻松地重新设置数据库......