新闻详情

新闻详情

首页 / 资讯中心 / 详情

test-guard - phpunit

发布时间:2026/10/1 22:04:32来源:尧图网络
test-guard - phpunit
Test Guard — PHP / PHPUnit / Pest 模式九条规则在 PHP 项目中的具体应用包括 WordPress 和 WooCommerce。在审查或编写 PHP 测试时阅读此文件。规则 2PHP 中的 mock 边界有理由的 mock 目标HTTPGuzzle 处理器/中间件、WordPress 中的pre_http_request过滤器外部 SDK支付网关、邮件提供商、LLM API 客户端时钟注入时钟psr/clock而不是直接调用time()外部路径上的文件系统优先使用vfsStream或临时目录而不是 mock无理由的 mock用 Mockery/Prophecy 替身模拟项目自己的值对象、DTO 或实体——请构造真实实例规则 8仅为了隔离类而模拟内部服务——如果装配很痛苦修复构造函数不要伪造协作者被测类的部分 mock——你不再测试该类本身规则 3数据提供者/** * see Rule 3 — variants of one scenario belong in a data provider. */#[DataProvider(provideSlugCases)]publicfunctiontest_slugify_normalizes_input(string$raw,string$expected):void{$this-assertSame($expected,slugify($raw));}publicstaticfunctionprovideSlugCases():array{returnarray(lowercasesarray(Hello World,hello-world),strips paddingarray( padded ,padded),transliteratesarray(Café Menu,cafe-menu),);}Pest 等价写法it(normalizes slug, ...)-with([...])。WordPress 特有的边界集成测试WP_UnitTestCase/wp-env/wp-cli scaffold使用带工厂的真实 WordPress 测试框架——self::factory()-post-create()、self::factory()-user-create()。不要 mockWP_Post或WP_User工厂的存在正是为了让你不必 mock规则 8。未加载 WordPress 的单元测试Brain Monkey / WP_Mock模拟get_option()或apply_filters()等 WordPress 函数是边界 mock有理由。但要断言你的代码用这些值做了什么而不是get_option被以特定参数调用规则 1。使用pre_http_request过滤器 mock 出站 HTTP而不是修补wp_remote_get内部。不要测试 WordPress 会净化、转义或钩子会触发——那是核心的保证规则 7。测试你的回调在给定输入时的行为。WooCommerce 说明在集成测试中通过WC_Helper_Product和WC_Helper_Order构建真实的WC_Product/WC_Order对象——绝不使用它们的MagicMock风格替身规则 8。购物车和结账逻辑是有状态的优先使用集成测试而非重度 mock 的单元测试mock 的购物车会隐藏钩子排序 bug。规则 9真实数据库WP_UnitTestCase已经将每个测试包裹在针对真实模式的事务中——将其用于查询、元数据和持久化逻辑而不是 mock$wpdb。Mock$wpdb-prepare或$wpdb-get_results来测试查询构建器什么都测不到。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

自适应遗传算法在配电网DG选址定容中的Matlab复现与调试 2026/10/1 22:55:29

自适应遗传算法在配电网DG选址定容中的Matlab复现与调试

第一次拿到这个课题,我的第一反应是:这不就是把遗传算法套到配电网DG选址定容上,换个自适应算子,然后在IEEE33和IEEE118上各跑一遍的事儿吗?等我真正动手复现才发现,细节远比想象中多。今天这篇就把整个复现…

阅读更多 →
智能表单实战:Schema 建模、条件显隐、校验时机与自动填充 2026/10/1 22:55:29

智能表单实战:Schema 建模、条件显隐、校验时机与自动填充

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
PVE服务器硬件监控:CPU温度、硬盘温度与UPS状态集成指南 2026/10/1 22:55:28

PVE服务器硬件监控:CPU温度、硬盘温度与UPS状态集成指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
DevHub深度拆解:AI一键生成应用与成本账本的设计之道 2026/10/1 22:55:21

DevHub深度拆解:AI一键生成应用与成本账本的设计之道

写这篇稿子之前,我先说明一下背景。最近我在产品的选型阶段,密集接触了一批"AI一键生成应用"的工具,其中一个让我印象特别深的就是 DevHub。它的起点其实很简单——你在输入框里用自然语言描述一个想要的东西,比如"…

阅读更多 →
TestableMock自定义Mock处理器:从字节码增强到测试替身实战 2026/10/1 22:55:21

TestableMock自定义Mock处理器:从字节码增强到测试替身实战

我刚开始用TestableMock那阵子,一直把它当Mockito的“平替”来用——写个MockMethod,把外部依赖替换掉,省去一堆when().thenReturn()的样板代码。直到有个老项目里的一个静态工具类怎么都Mock不生效,我才开始认真翻它的源码&#…

阅读更多 →
Gin中间件详解:从执行链路原理到工程落地实践 2026/10/1 22:55:21

Gin中间件详解:从执行链路原理到工程落地实践

在Go的Web开发圈子里,Gin早就是事实上的标配框架了。很多人用它写接口,Handler里塞满了一坨一坨的重复逻辑:接口要不要登录、要不要打日志、要不要捕获panic、要不要做跨域……刚开始不觉得,等业务长起来,每个接口都来…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉