如何通过Composer安装和使用Pest,下一代PHP测试框架?

发布时间 - 2025-12-20 00:00:00    点击率:
Pest 可通过 Composer 安装并兼容 Laravel 与纯 PHP 项目:Laravel 中执行 composer require pestphp/pest --dev --with-all-dependencies 后 vendor/bin/pest --init;非 Laravel 项目则先 composer require pestphp/pest --dev 再 vendor/bin/pest --init 并选 Plain PHP 模式,生成 tests/Pest.php 和 phpunit.xml;测试文件置于 tests/ 目录、以 Test.php 结尾,使用 it() 或 describe() 编写函数式测试,核心断言为 expect();所有命令均通过 vendor/bin/pest 执行,支持运行全部/单个/过滤测试、彩色详细输出及覆盖率报告;Pest 与 PHPUnit 共存且可逐步迁移,复用 phpunit.xml 配置。

接用 Composer 安装 Pest 很简单,但要真正用起来,得配合 Laravel 项目结构或手动配置测试环境,否则会报错或无法运行。

安装 Pest(支持 Laravel 和纯 PHP 项目)

Pest 推荐与 Laravel 一起使用,也支持独立 PHP 项目。安装前确保已安装 Composer 和 PHP 8.0+。

  • 在 Laravel 项目中:运行 composer require pestphp/pest --dev --with-all-dependencies,然后执行 vendor/bin/pest --init 初始化配置
  • 在非 Laravel 的 PHP 项目中:先运行 composer require pestphp/pest --dev,再手动初始化:vendor/bin/pest --init,选择 "Plain PHP" 模式
  • 初始化后会生成 tests/Pest.php(入口文件)和 phpunit.xml(Pest 兼容 PHPUnit 配置)

编写第一个 Pest 测试文件

Pest 使用函数式语法,比 PHPUnit 更简洁。测试文件默认放在 tests/ 目录下,以 Test.php 结尾(如 ExampleTest.php)。

  • 基础写法示例:
    it('adds two numbers', function () {
      expect(2 + 3)->toBe(5);
    });
  • expect() 是 Pest 的核心断言函数,自动启用链式断言(无需 use 语句)
  • 支持分组测试:describe('Math operations', function () { it('adds correctly', ...); });

运行测试和常用命令

所有命令都通过 vendor/bin/pest 执行,它其实是 PHPUnit 的轻量封装。

  • 运行全部测试:vendor/bin/pest
  • 运行单个文件:vendor/bin/pest tests/ExampleTest.php
  • 运行带关键词的测试:vendor/bin/pest --filter adds
  • 启用颜色、详细输出和失败时显示堆栈:vendor/bin/pest --colors --verbose --debug
  • 生成测试覆盖率报告(需安装 php-xdebug 或 phpdbg):vendor/bin/pest --coverage

与 PHPUnit 共存和迁移技巧

Pest 底层完全兼容 PHPUnit,可与现有 PHPUnit 测试并存。已有项目可逐步迁移。

  • 保持 tests/ 下同时存在 *Test.php(PHPUnit)和 *Test.php(Pest),两者都能被 vendor/bin/pest 运行
  • 将 PHPUnit 类写法转为 Pest 函数式:去掉 class XXXTest extends TestCase,直接用 it()test()
  • 自定义 PHPUnit 配置(如 bootstrap、paths)仍通过 phpunit.xml 控制,Pest 会读取它


# php  # laravel  # bootstrap  # composer  #   # ai  # 封装  # require  # xml  # Filter  # math  #   # class  # function  # 关键词  # 链式  # 放在  # 第一个  # 都能  # 已有  # 很简单  # 自定义  # 报错  # 可通过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在Windows服务器上快速搭建网站?  如何用AWS免费套餐快速搭建高效网站?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何在阿里云ECS服务器部署织梦CMS网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  文字头像制作网站推荐软件,醒图能自动配文字吗?  详解Android图表 MPAndroidChart折线图  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何利用DOS批处理实现定时关机操作详解  jquery插件bootstrapValidator表单验证详解  如何获取PHP WAP自助建站系统源码?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  JavaScript Ajax实现异步通信  EditPlus中的正则表达式 实战(4)  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何快速搭建高效可靠的建站解决方案?  如何在万网主机上快速搭建网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在景安服务器上快速搭建个人网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel如何创建自定义中间件?(Middleware代码示例)  如何快速查询域名建站关键信息?  如何用y主机助手快速搭建网站?  如何在搬瓦工VPS快速搭建网站?  如何破解联通资金短缺导致的基站建设难题?  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  如何快速搭建支持数据库操作的智能建站平台?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在云主机快速搭建网站站点?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  Laravel如何创建自定义Facades?(详细步骤)  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Android Socket接口实现即时通讯实例代码  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  高端建站三要素:定制模板、企业官网与响应式设计优化  JavaScript如何实现类型判断_typeof和instanceof有什么区别  javascript基本数据类型及类型检测常用方法小结  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Python文件操作最佳实践_稳定性说明【指导】  如何在建站之星绑定自定义域名?  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何彻底卸载建站之星软件?