恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码

  • 首页
  • 资讯中心
  • /
  • LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码

相关资讯

Data-Science-For-Beginners 爱沙尼亚语课程导览:20 课数据科学教学体系的结构、安装与离线使用 2026/9/13 8:56:34
Linux垃圾文件清理与磁盘空间释放实战指南 2026/9/13 8:56:34
LKY Office Tools:一键下载、安装、激活 Office 的完整指南 2026/9/13 8:51:34

最新资讯

Matlab实现FastICA语音盲分离:原理、代码与实验
《道德经》实用读法:版本选择、核心章节精读与现代应用
AI编程工具实战图谱:上下文理解、工程约束与私有化确定性
高速连接器S参数实战:从网络分析仪到差分测量
TradingAgents:金融级多智能体架构如何融合LLM实现可审计交易
K-means预处理提升KNN分类精度的原理与MATLAB实现

今日推荐

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码

发布时间:2026/9/13 8:56:34
LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码 LiipFunctionalTestBundle 命令行测试:如何控制 runCommand 的输出级别与退出码【免费下载链接】nuclei-templatesCommunity curated list of templates for the nuclei engine to find security vulnerabilities.项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei-templatesCI 日志满屏 32m 转义序列、命令失败但测试显示通过,是 Symfony 命令行功能测试的两个高发事故。LiipFunctionalTestBundle 的 runCommand() 把内核启动、执行与捕获收进一次调用,并暴露装饰、详细级别、输入模拟三个控制点,分别对应这些现场。面向有 PHP 与 Symfony 基础、没接过这个库的开发者,下文按翻车现象逐个给出控制点与配置位置。runCommand() 实际做的事:启动或复用内核,取出指定命令,交给 CommandTester 执行,再返回 tester 供断言。这样设计是为了让测试类里不再出现手工组装 Application 的样板代码。跑通 runCommand 并复用内核手工 new Application($kernel) 再 execute(),样板又多、内核又反复冷启动。继承库的 WebTestCase 后,runCommand() 一行走通;第三个参数传 true,同一测试内多次调用可复用内核。最小可运行的测试类长这样,退出码断言留到后面单独补:use Liip\FunctionalTestBundle\Test\WebTestCase; final class ExportCommandTest extends WebTestCase { public function testExport(): void { $tester $this-runCommand(app:export, [--limit 50]); $this-assertStringContainsString(50 rows written, $tester-getDisplay()); } }让输出可控:装饰与详细级别本地终端颜色正常,CI 纯文本日志里却满屏 32m 转义序列;关键日志又只在 -vvv 下才打印,断言匹配不到也不知道卡在哪。这两个问题共用一组配置键,定义在 [配置节点,默认分别为 true 与 normal。全局:配置两个键在 test 环境的包配置里一次写死,装饰控制是否输出 ANSI 码,详细级别决定 Console 打印到哪个通道:liip_functional_test: command_decoration: false command_verbosity: debug⚠️ command_verbosity 只接受五个合法值,拼错会在 getVerbosityLevel() 处抛 OutOfBoundsException,示例测试 里有断言这条异常的用例。配置值对应常量输出范围quietVERBOSITY_QUIET静默normalVERBOSITY_NORMAL常规信息verboseVERBOSITY_VERBOSE追加 -v 说明very_verboseVERBOSITY_VERY_VERBOSE追加 -vv 日志debugVERBOSITY_DEBUG追加 -vvv 细节单测:逐条覆盖个别测试想临时改行为时,用公开方法覆盖全局值,两者都定义在 核心实现:public function testRetryLogVisible(): void { $this-isDecorated(false); $this-setVerbosityLevel(debug); $tester $this-runCommand(app:export); $this-assertStringContainsString(debug: retry host, $tester-getDisplay()); }断言退出码与输出命令抛错、退出码非零,但输出恰好含断言词时测试照样变绿。退出码才是权威信号,两层一起断言,官方文档 也建议同时校验:$tester $this-runCommand(app:export, [--limit 50]); $this-assertSame(0, $tester-getStatusCode()); $this-assertStringContainsString(50 rows written, $tester-getDisplay());模拟交互式命令输入带确认提示的命令不喂输入就走默认分支。setInputs() 按提示顺序填回答,调用后 runCommand() 自动打开交互模式;否则 CommandTester 默认非交互,交互分支不会执行。下面这个用例模拟用户输入 no,验证清理未执行:public function testPurgeRefused(): void { $this-setInputs([no]); $tester $this-runCommand(app:cache:purge); $this-assertStringNotContainsString(Purged, $tester-getDisplay()); } 输入在首次执行后清空,第二次调用回到默认行为,正好用来测第二次不再询问的场景。排错速查表现象原因处理匹配不到 -v 才打印的文案级别停留在 normal配置 command_verbosity 或 setVerbosityLevel抛 OutOfBoundsExceptionverbosity 值拼错对照 quiet / normal / verbose / very_verbose / debug日志出现 [32m 转义序列装饰器未关command_decoration: false 或 isDecorated(false)交互命令走错分支未提供输入或非交互setInputs() 按提示顺序填值测试绿但命令实际失败只断言了输出补 getStatusCode() 断言【免费下载链接】nuclei-templatesCommunity curated list of templates for the nuclei engine to find security vulnerabilities.项目地址: https://gitcode.com/GitHub_Trending/nu/nuclei-templates创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号