pest装不上主因是环境版本不达标或配置缺失:需php≥8.1、composer≥2.5、phpunit/phpunit≥9.x;laravel项目须安装pest-plugin-laravel并运行php artisan pest:install;测试文件须以test.php结尾且含it()/test()调用;执行用php vendor/bin/pest或php artisan test。

Pest 装不上?先看 PHP 和 Composer 版本是否达标
装 pestphp/pest 失败,报 Your requirements could not be resolved,大概率不是 Pest 有问题,而是环境卡在旧版本上。Pest v2 强制要求 PHP ≥ 8.1 且 Composer ≥ 2.5。
- 运行
php -v确认 PHP 版本;低于 8.1 就得升级 PHP,别指望降级 Pest - 运行
composer --version;低于 2.5 执行composer self-update - 如果项目里锁死了
phpunit/phpunit在 9.x 以下(比如 8.5),Pest v2 会直接拒绝安装——它不兼容旧 PHPUnit
Laravel 项目必须装插件 + 运行初始化命令
只执行 composer require --dev pestphp/pest,Laravel 的 get()、post()、RefreshDatabase 全都用不了,会报 Call to undefined function get()。
- 必须额外安装插件:
composer require --dev pestphp/pest pestphp/pest-plugin-laravel - 必须运行:
php artisan pest:install—— 这步生成tests/Pest.php,注入uses(Tests\TestCase::class),并建立Feature/Unit目录结构 - 删掉
tests/TestCase.php?不行。它被uses()继承,负责数据库事务、HTTP 工具、认证上下文等关键能力 - 手动加了
tests/Integration目录?得在tests/Pest.php的uses(...)->in('Feature', 'Unit')里显式加上'Integration',否则测试静默失效
测试文件命名和结构不被识别?按 PHPUnit 规约来
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
Pest 不靠文件名前缀识别测试,而是严格遵循 PHPUnit 的约定:文件名必须以 Test.php 结尾,且内容中至少有一个 it() 或 test() 调用。
- 正确命名:
UserRegistrationTest.php、ApiEndpointTest.php - 错误命名:
user_test.php、PestUserTest.php、Example.php—— 全部跳过 - 最简可用结构:
<?php it('adds two numbers', function () { expect(1 + 1)->toBe(2); }); - 用了
describe()?里面仍需至少一个it();纯describe()块不触发执行 - 默认只扫
tests/Feature/和tests/Unit/;改路径不是配 Pest,而是改phpunit.xml里的<directory></directory>
运行命令总报 command not found?绕过 PATH 直接调用
./vendor/bin/pest 报 “command not found”,通常是因为 Composer 的 bin-dir 被自定义过,或 autoloader 没刷新。
- 优先用:
php vendor/bin/pest --init或php vendor/bin/pest—— 绕过 shell 查找逻辑,100% 可用 - 想用
composer test?在composer.json的scripts里加:"test": "php vendor/bin/pest" - 别手动把
vendor/bin加进系统 PATH —— 不同项目依赖不同版本 Pest,混用会出问题 - CI/CD 环境建议用
php artisan test,它走 Laravel 完整生命周期;日常开发用php vendor/bin/pest更快,支持--watch(需额外装pestphp/pest-plugin-watch)
真正卡住人的地方,往往不是语法写错,而是 tests/Pest.php 里漏了 ->in()、TestCase.php 被删了、或者 phpunit.xml 不存在或名字不对。这些点不检查清楚,写再漂亮的 it() 都不会跑。










