Laravel 6.12 "A facade root has not been set." 使用 Log::

Laravel 6.12 "A facade root has not been set." when using Log::

在单元测试中使用 Log 会导致奇怪的错误

版本: Laravel 框架 6.12.0 php 7.4 php单元 8.5.2

<?php

namespace Tests\Unit;

use Illuminate\Support\Facades\Log;
use PHPUnit\Framework\TestCase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        Log::info('hellowli');
        $this->assertTrue(true);
    }
}

我运行:

$ php7.4 vendor/bin/phpunit tests/Unit/ExampleTest.php

$ php7.4 vendor/bin/phpunit tests/Unit/ExampleTest.php 
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.

E                                                                   1 / 1 (100%)

Time: 49 ms, Memory: 6.00 MB

There was 1 error:

1) Tests\Unit\ExampleTest::testBasicTest
RuntimeException: A facade root has not been set.

/home/toskan/IdeaProjects/apartments/laravel/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:258
/home/toskan/IdeaProjects/apartments/laravel/tests/Unit/ExampleTest.php:17

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

您的测试用例扩展了错误的基础 TestCase。

只需将命名空间更改为:

use Tests\TestCase;

而不是:

use PHPUnit\Framework\TestCase;