解决 Laravel 单元测试报错:A facade root has not been set
在使用 Laravel 写单元测试时,直接复制了默认的文件:
tests/Unit/ExampleTest.php
。
而在测试对象中使用到了 Facades 相关的语法,执行
phpunit
时报错:
RuntimeException: A facade root has not been set.
/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258
此问题的原因是继承了错误的基类,默认文件
tests/Unit/ExampleTest.php
中:
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
* A basic test example.
* @return void
public function testBasicTest()
$this->assertTrue(true);
继承的是
PHPUnit\Framework\TestCase
,而我们应该继承
tests/TestCase.php
中的
Tests\TestCase
。
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase