首页 > 心得分享 > Laravel写单元测试时,提示 Facade 不存在的原因及解决方案。

Laravel写单元测试时,提示 Facade 不存在的原因及解决方案。

今天接新项目准备培养写单测的好习惯,结果踩坑暴多...

发现一个框架的 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 的问题。

上一篇: 教育部全国青少年普法网-考试题库与答案(自动获取题库脚本)

下一篇: “老鼠赛跑”游戏,选择比努力更重要,但运气才是最重要的。

最近回复

标签