Laravel 6/7 测试:尚未设置外观根

Posted

技术标签:

【中文标题】Laravel 6/7 测试:尚未设置外观根【英文标题】:Laravel 6/7 testing: A facade root has not been set 【发布时间】:2020-09-10 04:13:03 【问题描述】:

我正在尝试为我的 Laravel 7 应用程序编写一些测试。 但我一直面临A facade root has not been set. 错误。

<?php

namespace Tests\Feature;

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

class AddressListenerRepositoryTest extends TestCase

    public function testCreate()
    
        Config::set('x', 'address_listeners'); // Cause of "A facade root has not been set" error
    

谁能解释这个错误的原因?

【问题讨论】:

【参考方案1】:

您应该使用use Test\TestCase; 而不是PHPUnit\Framework\TestCase

测试需要调用 createApplication 方法,该方法位于Test\TestCase 中,该方法将触发内核,因此每个对象和类都会被引导。然后你可以使用容器、外观、请求、响应和所有这些东西。

【讨论】:

以上是关于Laravel 6/7 测试:尚未设置外观根的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6:尚未设置外观根

Laravel 7致命错误:未捕获的RuntimeException:尚未设置外观根

将 laravel 5.8 升级到 6:致命错误:未捕获的 RuntimeException:尚未设置外观根

Laravel 5.5:PHPUnit(带覆盖)不喜欢来自多个文件的路由并抛出“尚未设置外观根”。没有报道它是绿色的

用嘲弄来测试 Laravel 外观总是通过,即使它应该失败

在单元测试中模拟时找不到 Laravel 外观类