valu / wp-testing-tools
WordPress 测试工具
README
WordPress 测试,让每个人都能做到!🤗
测试 WordPress 插件很麻烦。wp-browser 项目使这成为可能,但它需要使用一个运行的 WordPress 安装。不幸的是,设置一个很费劲,这就是为什么许多特别是较小的插件完全省略了测试。所以这个项目的谦逊使命是消除这个障碍,这样就没有借口不编写 WordPress 插件的测试了!💪
本项目包含以下组件
- 一个 Composer 可安装脚本(
wp-install
),用于将 WordPress 安装到 Docker 容器、GitHub Actions 或其他任何地方。 - 可重用的 Docker 环境,用于本地测试和调试 xdebug。
- GitHub Action 工作流程,用于持续集成。
- 如何设置所有这些的示例插件。
使用此设置的项目
- https://github.com/valu-digital/wp-graphql-cache
- https://github.com/valu-digital/wp-graphql-polylang
- https://github.com/valu-digital/wp-graphql-lock
- https://github.com/valu-digital/wp-graphql-offset-pagination
开始
对于新项目,您只需复制 plugin/
目录下的所有文件,并将“example”字符串重命名。
对于现有项目,您可以使用 composer 安装此工具。
composer require --dev valu/wp-testing-tools
# You'll want the wp-browser too
composer require --dev lucatume/wp-browser
安装后,您可以使用以下命令将测试文件复制到您的插件中
./vendor/bin/wptt-configure
插件文件
示例插件位于 plugin/
目录下。让我们逐个文件查看并解释每个文件的目的。
composer.json
这是主要的 composer 文件,它使您的插件可以通过 composer 进行安装。在这里定义您插件的任何库依赖项,但不要添加其他插件,因为您的插件用户可能希望以其他方式安装它们。
在这里,我们在 "require-dev"
下将此包定义为开发依赖项,使用 "valu/wp-testing-tools": "^0.4.0"
。
但最有趣的部分是 "scripts"
下的 "wp-install"
脚本
wp-install --full --wp-composer-file composer.wp-install.json --env-file .env
这个 wp-install
工具是由此包提供的,它实际上使用 wp-cli 进行 WordPress 安装。
它接受几个参数
--full
:进行完整安装以进行功能测试和验收测试。如果只进行 wpunit 测试,则可以省略此参数。--wp-composer-file
:安装 WordPress 时使用的composer.json
文件--env-file
:使用的 .env 文件--wp-composer-file
和--env-file
参数是可选的,示例只是显示了默认值- 有关更多信息,请参阅
--help
或 源代码。
composer.wp.install.json
由于我们无法将 WP 插件依赖项添加到主 composer.json
文件中,因此我们可以在这里添加它们,并且它们将自动安装并激活到测试安装中。
.env
此文件根据环境从 .env.github
或 .env.docker
复制而来。它包含数据库凭据和 WordPress 的安装位置。查看其内容以获取更多信息。
codeception.dist.yml
Codeception 配置。您必须将您的插件入口点(以及 composer.wp-install.json
中定义的其他入口点)配置到 modules.config.WPLoader.plugins
和 modules.config.WPLoader.activatePlugins
部分,以便在 wpunit 测试期间激活。
tests/
包含测试的目录。请参阅 Codeception 和 wp-browser 文档。
docker/
此目录包含Docker环境配置。作为插件作者,您不应在此目录下进行任何编辑。您需要的任何自定义都应该可以在.env.docker
和其他扩展点中完成。如果您需要一些帮助来自定义Docker环境,请随时提出问题!
这样,Docker环境可以升级。当您想要更新到最新版本时,只需从此存储库复制最新版本。
docker目录公开了一个run
脚本来处理环境
./docker/run compose
:这是一个对docker-compose
的小包装,用于启动Docker环境。./docker/run shell
:一旦环境设置完毕,您可以使用此脚本来进入测试shell并运行codecept
命令./docker/run update
:当您更新valu/wp-testing-tools
composer包时,此命令可以用来更新Docker环境。
插件目录将被挂载到/app
,因此您可以从主机进行更改,并且这些更改会立即在容器中可见。
plugin.php
和src/
这些是对如何使用Composer自动加载来结构WordPress插件的看法。如果您不关心这些,或者正在修改现有插件,您只需删除这些文件以及composer.json
中的"autoload"
配置即可。
但是,如果您这样做,强烈建议您阅读plugin.php中的注释。它包含了如何正确地将您的插件提供给Composer和非Composer用户的信息。
为功能测试自定义WP安装
您可以添加一个tests/wptt-wp-config.php
,如果它是可读的,它将作为安装的wp-config.php
中需要的一部分。
您还可以添加tests/wptt-mu-plugin.php
,如果它是可读的,它将作为安装中的mu-plugin加载。
在Docker中使用XDebug
Visual Studio Code
安装PHP Debug扩展。
- 将启动配置添加到
.vscode/launch.json
或全局配置
{ "version": "0.2.0", "configurations": [ { "name": "Docker: PHP Listen for XDebug", "type": "php", "request": "launch", "port": 9000, "pathMappings": { "/app": "${workspaceFolder}" } } ] }
-
使用
./docker/run compose
启动容器 -
从VSCode的
DEBUG AND RUN
视图中启动Docker: PHP Listen for XDebug
启动配置 -
添加断点
-
启动测试shell
./docker/run shell
,然后使用codecept run wpunit
运行测试
成功了!
PHPStorm
IDEKEY是"wptt"。
请贡献吗?