扫码阅读
手机扫码阅读
解决 Laravel 单元测试报错:A facade root has not been set
![](/theme/default/default/images/main/eye-open.png)
Laravel 单元测试基类选择问题摘要
在使用 Laravel 进行单元测试时,如果直接复制默认的 tests/Unit/ExampleTest.php
文件进行测试,并在测试中使用 Facades,执行 phpunit
时可能会遇到错误提示:RuntimeException: A facade root has not been set。这是因为测试类错误地继承了 PHPUnit\Framework\TestCase
基类。
错误原因及解决办法
错误产生的原因是因为错误地继承了基类。在 Laravel 中,当测试类需要使用 Facades 时,应该继承 tests/TestCase.php
文件中的 Tests\TestCase
类,而不是 PHPUnit\Framework\TestCase
。
正确的基类继承应该如下所示:
namespace Tests;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase {
use CreatesApplication;
}
正确的模板文件选择
要避免这种错误,应该复制 tests/Feature/ExampleTest.php
作为模板文件,这样就不会遇到类似的问题。
使用 Artisan 命令创建测试类
除了复制模板文件,还可以使用 Laravel 的 Artisan 命令来创建测试类。通过运行 php artisan make:test FooTest
命令可以直接在 tests/Feature
目录下创建测试文件。如果需要在 tests/Unit
目录中创建测试文件,则需要添加 --unit
参数,如 php artisan make:test BarTest --unit
。
想要了解更多,点击
查看原文
鲁飞的其他文章
你不知道的PHP小技巧之计算文本相似度
有这样一个需求:需要对于用户发布的内容标题进行相似度对比,如果有之前的内容和当前发布的内容标题相似度到达某个阈值时则禁止发布或进行其他的一些操作。
通过微信开放平台授权获取公众号文章
如果想要实现一个将公众号文章搬运到某个社区中去发布的功能,除了使用爬虫等方法,还可以通过微信开放平台授权,调用官方接口来获取公众号文章。
MacOS 等机器配置 Docker 启用 Remote API
Docker 不仅可以通过本地命令行docker命令进行调用,还可以通过开启远程控制 API,使用 HTTP
Nginx目录浏览并进行美化
Nginx 作为一个高性能的 HTTP 和反向代理 web 服务器,默认不允许列出站点的整个目录,如果需要开启,可以通过配置打开此功能。
simps/mqtt:适用于 PHP 的 MQTT 协议解析和协程客户端
也许这是第一个支持 MQTT v5.0 协议的 PHP library…
加入社区微信群
与行业大咖零距离交流学习
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
软件研发质量管理体系建设
白皮书上线