Laravel - 设置测试数据库

时间:2014-07-12 23:05:23

标签: laravel phpunit

使用我的laravel应用程序,我有一堆迁移和db种子数据。 在app/config/testing/database.php中,我设置了一个用于测试的mysql数据库。

我用migratedb:seed命令填充了测试数据库,指定了测试环境。

这很好用,但我想在每次运行phpunit时调用这些命令。如果它在setUp中执行,则只要在每次测试时调用它就会花费很长时间。

我也可以在setUpBeforeClass中调用它,这更好,但如果我测试10个课程则更长。

当我运行phpunit

时,我是否可以只使用一次?

1 个答案:

答案 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;
    }

    ....

这似乎有效,但感觉并不理想,但意味着如果我需要重置它以进行测试,我可以轻松地重新设置数据库......