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