用途
该技能用于 WordPress 插件与主题的测试与质量保障,覆盖 PHPUnit 集成测试、WP_Mock 单元测试、PHPCS 编码规范检查以及 CI/CD 工作流。资料将其定位为质量保障方案,帮助开发者在插件和主题开发中建立分层测试体系。
主要能力
测试策略与测试金字塔
资料给出 WordPress 测试层级:
- E2E 测试(Playwright):完整用户工作流、浏览器自动化,约占 10%。
- 集成测试(PHPUnit + WordPress):数据库操作、钩子交互,约占 30%。
- 单元测试(WP_Mock):纯逻辑、不依赖 WordPress,约占 60%。
PHPUnit 与 WP_Mock 的选择
使用 PHPUnit(集成测试)的场景:测试数据库操作($wpdb、文章创建、元数据)、测试 WordPress 钩子(动作/过滤器实际触发)、测试模板渲染与输出、测试插件启用/停用逻辑、测试使用真实 WordPress 函数。
使用 WP_Mock(单元测试)的场景:测试纯业务逻辑、测试调用 WordPress 函数但逻辑独立的函数、需要快速执行(无需数据库)、隔离测试无副作用、模拟外部 API 调用。
测试覆盖率目标
- 新代码:最低 80% 覆盖率。
- 关键路径:95% 覆盖率(支付处理、身份验证、数据验证)。
- 遗留代码:逐步改进,优先高风险区域。
- 公共 API:所有公共方法 100% 覆盖率。
测试优先级与不测试内容
优先测试:安全函数(nonce 验证、清理、能力检查)、数据操作(数据库 CRUD、验证、转换)、业务逻辑(计算、工作流、状态转换)、钩子回调、公共 API(REST 端点、WP-CLI 命令)。
不测试:WordPress 核心函数、第三方库内部、无逻辑的简单 getter/setter、配置文件(theme.json、block.json)。
使用方式
PHPUnit 集成测试设置
第一步,安装依赖:
composer require --dev phpunit/phpunit "^9.6"
composer require --dev yoast/phpunit-polyfills "^2.0"
wp scaffold plugin-tests my-plugin
该命令会生成 tests/bootstrap.php、tests/test-sample.php、phpunit.xml.dist、bin/install-wp-tests.sh。
第二步,安装 WordPress 测试库:
bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
也可指定版本,例如将 latest 换成 6.7。
第三步,配置 phpunit.xml.dist,资料给出了包含 bootstrap、testsuites、coverage、php 常量等节点的完整示例。
测试基类与工厂对象
资料提供 tests/bootstrap.php 示例,通过 tests_add_filter('muplugins_loaded', '_manually_load_plugin') 手动加载被测插件,并启动 WordPress 测试环境。
可用工厂对象包括:$this->factory->post(文章、页面、自定义文章类型)、$this->factory->user(带角色的用户)、$this->factory->term(分类项)、$this->factory->category、$this->factory->tag、$this->factory->comment、$this->factory->blog(多站点博客)。
数据准备与清理
资料给出 setUp()/tearDown()(每个测试方法前后运行)、setUpBeforeClass()/tearDownAfterClass()(整个测试类前后运行一次)的示例,包括注册/注销自定义文章类型、创建/删除测试数据、创建/删除自定义数据表等。
完整插件测试示例
资料提供 tests/test-plugin-functionality.php 示例,覆盖自定义文章类型注册、自定义分类法注册、保存自定义元数据、短代码输出、动作钩子触发、过滤器修改内容等测试。
WP_Mock 单元测试
安装命令:
composer require --dev mockery/mockery "^1.6"
composer require --dev 10up/wp_mock "^1.0"
composer require --dev phpunit/phpunit "^9.6"
资料还给出 tests/bootstrap-wp-mock.php 的开头部分,但内容在资料中未完整提供。
适用场景
- 为 WordPress 插件编写 PHPUnit 集成测试。
- 在不加载 WordPress 核心的情况下用 WP_Mock 做单元测试。
- 用 PHPCS 配合 WPCS 规则集强制编码规范。
- 在 CI/CD 中运行测试与质量检查。
限制
资料未提供该技能的具体安装方式、运行命令、支持的 WordPress 或 PHP 版本范围、CI/CD 平台配置细节、PHPCS 配置示例的完整内容,以及 WP_Mock 引导文件的完整内容。这些内容暂未提供。