首页 > 解决方案 > tearDownAfterClass 中的 laravel phpunit db 连接

问题描述

如何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')."%'",[]);
        ...
    }
}

标签: laravelphpunit

解决方案


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

添加(new self())->setUptearDownAfterClass :

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

推荐阅读