Решение для тестирования Laravel PEST — как решить проблему «Корень фасада не установлен»
9 декабря 2023 г.При появлении сообщения об ошибке «Корень фасада не установлен» в Laravel обычно указывает на проблему с настройкой фасада Laravel. Эта проблема может возникнуть, когда приложение Laravel не загружается должным образом, особенно во время выполнения теста.
Недавно я столкнулся и решил эту проблему, работая над сценарием тестирования Laravel PEST. Вот подробное описание проблемы и ее решения.
Описание проблемы:
Ошибка проявилась после введения в модель признака LaravelScoutSearchable, как показано в фрагменте кода ниже:
use IlluminateFoundationAuthUser as Authenticatable;
final class User extends Authenticatable
{
use Searchable;
}
Впоследствии был реализован PEST-тест:
use AppModelsUser;
it('can determine if it has a password set', function () {
$user = new User(['password' => 'foo']);
expect($user->hasPassword())->toBeTrue();
});
Однако тест завершился неудачей со следующей ошибкой:
• TestsUnitUserTest > it can determine if it has a password set
PHPUnitFrameworkExceptionWrapper
A facade root has not been set.
at vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:352
{
$instance = static::getFacadeRoot();
if (! $instance) {
throw new RuntimeException('A facade root has not been set.');
}
return $instance->$method(...$args);
}
Решение:
Чтобы решить эту проблему, в файлtests/Pest.php была добавлена следующая строка:
uses(
TestsTestCase::class,
)->in('Unit');
Это дополнение гарантирует, что необходимые компоненты Laravel правильно инициализируются при запуске тестов, тем самым устраняя ошибку «Корень фасада не установлен».
Благодаря использованию этого решения PEST-тест был успешно выполнен, что подтвердило эффективное решение проблемы.
Не стесняйтесь интегрировать этот подход в свой проект Laravel, чтобы решить аналогичные проблемы, связанные с ошибкой «Корень фасада не установлен» во время тестирования.
Оригинал