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_post
wp_update_post
wp_delete_post
wp_trash_post
wp_untrash_post
get_post
get_post_meta
add_post_meta
update_post_meta
delete_post_meta
get_metadata_by_mid
update_metadata_by_mid
delete_metadata_by_mid
wp_insert_attachment
wp_get_attachment_image
- 以及几乎与单个附件操作相关的任何东西
注意:使用 WP_Query
获取帖子(尚未)工作!要获取帖子,请使用 get_post( $id )
。
用户和权限
您可以创建、编辑和删除用户。
以下是一个不完整的函数支持列表:
wp_insert_user
wp_update_user
wp_delete_user
get_userdata
- 使用
new WP_User( $id )
获取用户 user_can
current_user_can
set_current_user
get_current_user_id
wp_get_current_user
get_user_meta
update_user_meta
add_user_meta
delete_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