Невозможно использовать фасады во время тестов на Lumen

Я хотел обновить свою тестовую базу данных один раз для каждого класса, а не для каждого теста, используя метод setUpBeforeClass. Поскольку он статичен, я не могу вызвать $this->artisan(), поэтому я попытался использовать Artisan::call() с фасадами.

Проблема в том, что фасады здесь не работают. Я получаю сообщение об ошибке A facade root has not been set., хотя раскомментировал $app->withFacades(); из bootstrap/app.php.

Как я могу вызвать ремесленную команду внутри setUpBeforeClass?

Вот мой тестовый класс:

<?php

use Illuminate\Support\Facades\Artisan;

class ExampleTest extends TestCase
{
    public static function setUpBeforeClass(): void
    {
        parent::setUpBeforeClass();

        Artisan::call('migrate:fresh');
        Artisan::call('db:seed --no-interaction');
    }

    public function testOne()
    {
        $this->assertTrue(true);
    }
}

person guizo    schedule 13.06.2021    source источник
comment
Насколько я знаю, невозможно вызвать ремесленную команду в setUpBeforeClass. Интересный вопрос, как вы пришли к другому выводу?   -  person hakre    schedule 14.06.2021
comment
Я не пришел к другому решению. Я надеялся, что есть способ вызвать ремесленную команду один раз для каждого файла, но, видимо, в setUpBeforeClass это невозможно - только что увидел этот ответ, и это имеет смысл - stackoverflow.com/a/46453228/6453726. Не знаю, как этого можно добиться, но я считаю, что это было бы очень полезно. Я разместил это как Idea в репозитории Laravel - github.com/laravel/framework/discussions/37980 Спасибо.   -  person guizo    schedule 12.07.2021
comment
Это звучит разумно для меня, и я быстро просмотрел сообщение на форуме идей. Возможно, вы могли бы отредактировать немного кода в своем сообщении, чтобы было более понятно, что вам нужно, без необходимости оставлять там обсуждение (например, код методов setUpBeforeClass).   -  person hakre    schedule 12.07.2021
comment
Хорошая идея. Я обновил текст. Если вы можете и не хотите, проголосуйте за идею на GitHub. Спасибо.   -  person guizo    schedule 12.07.2021