automattic / wordbless
WorDBless 允许您在PHPUnit测试中使用WordPress核心函数,而无需设置数据库和整个WordPress环境
Requires
- php: >=5.6.20
- roots/wordpress: ^6.0.2
- yoast/phpunit-polyfills: ^1.0
Requires (Dev)
- phpunit/phpunit: ^5.7 || ^6.5 || ^7.5 || ^9.5
This package is auto-updated.
Last update: 2024-08-26 01:00:27 UTC
README
WorDBless 允许您在PHPUnit测试中使用WordPress核心函数,而无需设置数据库和整个WordPress环境
用法
需要WorDBless
composer require --dev automattic/wordbless
请确保复制db.php
将此脚本添加到您的 composer.json
"scripts": { "post-install-cmd": "WorDBless\\Composer\\InstallDropin::copy", "post-update-cmd": "WorDBless\\Composer\\InstallDropin::copy" },
或者,您可以将 src/dbless-wpdb.php 手动复制到您项目下的 wordpress 文件夹,在 wp-content/db.php 下。
在您的引导文件中初始化它
在您的PHP单元引导文件中添加
require_once __DIR__ . '/../vendor/autoload.php'; // adjust the path as needed \WorDBless\Load::load();
这就对了!现在您可以在测试中使用WordPress核心函数了!
编写测试
扩展 BaseTestCase 以确保设置和清理都已就绪。
class My_Tests extends \WorDBless\BaseTestCase { public function test_add() { add_option( 'test', 123 ); $this->assertEquals( 123, get_option( 'test' ) ); } }
注意:WorDBless 使用 @before 和 @after 注解,而不是覆盖PHPUnit的 setUp 和 tearDown 方法。
如果您选择不扩展此基类,也没有问题。只需记住,WorDBless 不会为您设置或清理。查看 BaseTestCase::set_up_wordbless() 和 BaseTestCase::teardown_wordbless() 了解如何自行完成。
什么可行,什么不可行?
免责声明:这仍然是实验性的,所以所有测试都受到欢迎。
基本上,任何WordPress核心函数都将工作。例如 wp_parse_args、add_query_arg 等。
钩子和过滤器将工作。
大多数使用数据库的东西将不会工作,除非您相信魔法。
WorDBless 增加了什么魔法?
选项
操作选项将工作。 get_option、update_option、add_option 和 delete_option 应该可以正常工作!
帖子及其元数据
操作(创建、更新、删除)帖子及其附件将工作。获取单个帖子也将工作。以下是一个不完整的函数支持列表:
wp_insert_postwp_update_postwp_delete_postwp_trash_postwp_untrash_postget_postget_post_metaadd_post_metaupdate_post_metadelete_post_metaget_metadata_by_midupdate_metadata_by_middelete_metadata_by_midwp_insert_attachmentwp_get_attachment_image- 以及几乎与单个附件操作相关的任何东西
注意:使用 WP_Query 获取帖子(尚未)工作!要获取帖子,请使用 get_post( $id )。
用户和权限
您可以创建、编辑和删除用户。
以下是一个不完整的函数支持列表:
wp_insert_userwp_update_userwp_delete_userget_userdata- 使用
new WP_User( $id )获取用户 user_cancurrent_user_canset_current_userget_current_user_idwp_get_current_userget_user_metaupdate_user_metaadd_user_metadelete_user_meta
帖子可以分配给用户,并且将正确检查适当的权限。当删除用户时,将帖子重新分配给其他用户也将工作。
注意:使用 WP_Users_Query 获取用户将不会工作!要获取用户,请使用 get_userdata()、get_user_by 或 WP_User 类。
填充默认选项
默认情况下,只有 siteurl 和 home 选项填充为 http://example.org。
如果您想,您可以添加更多默认加载的选项。
只需在您的引导文件中声明一个 dbless_default_options() 函数,并使其返回一个数组,其中键是选项名称,值是选项值。
示例
这是一个简单的例子,仅使用了少量WordPress函数
以下是一个更复杂的例子,使用WorDBless来测试REST端点、创建用户和玩转钩子
在本地运行我们的持续集成
首先,在全球范围内将phive安装到您的计算机上。
然后执行以下单个命令。
composer run-script ci