今天接新项目准备培养写单测的好习惯,结果踩坑暴多...
发现一个框架的 BUG 已经提交 issue。
如果在集成单元测试 tests/Unit
时遇到如下报错的:
RuntimeException
A facade root has not been set.
at vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258
254▕ {
255▕ $instance = static::getFacadeRoot();
256▕
257▕ if (! $instance) {
➜ 258▕ throw new RuntimeException('A facade root has not been set.');
259▕ }
260▕
261▕ return $instance->$method(...$args);
262▕ }
请修改 use PHPUnit\Framework\TestCase;
为 use Tests\TestCase;
或者 use CreatesApplication
这个 trait
原因见原帖:Laravel 6/7 testing: A facade root has not been set
可解决在单元测试中无法使用:Redis,Db,Config,Route 等 Facade 的问题。