laravel phpunit在tearDownAfterClass中的数据库连接

时间:2020-02-05 10:53:44

标签: laravel phpunit

如何在Illuminate\Support\Facades\DB函数中调用tearDownAfterClass方法? 我收到错误Call to undefined method Illuminate\Support\Facades\DB::select()

use Illuminate\Support\Facades\DB;

abstract class TestCase extends BaseTestCase
{
    use CreatesApplication;
    use RefreshDatabase;

    public static function tearDownAfterClass(): void
    {
        $databases = DB::select("SHOW DATABASES LIKE '". env('SCHEMA_PREFIX')."%'",[]);
        ...
    }
}

2 个答案:

答案 0 :(得分:0)

我自己遇到了这个问题,唯一的解决方法是在 https://laracasts.com/discuss/channels/testing/seedingunseeding-the-database-once-per-test-class?page=1#reply=609036

(new self())->setUp添加到tearDownAfterClass中:

public static function tearDownAfterClass(): void
{
  (new self())->setUp();
  DB:statement('stuff');//works now
}

答案 1 :(得分:0)

如果您在测试类中定义自己的 setUp/tearDown 方法,请务必在父类上调用相应的 parent::setUp()/parent::tearDown() 方法。只需在调用 parent 后放置您的设置逻辑。在 Laravel 8.x 中测试

/**
 * Setup test
 *
 * @return void
 */
public function setUp() : void
{
    parent::setUp();
}




/**
 * Tear down test
 *
 * @return void
 */
public function tearDown() : void
{
    parent::tearDown();
}