automattic/wordbless

WorDBless 允许您在PHPUnit测试中使用WordPress核心函数,而无需设置数据库和整个WordPress环境

安装次数: 5,330,977

依赖项: 61

建议者: 0

安全性: 0

星级: 130

关注者: 13

分支: 6

开放问题: 7

类型:wordpress-dropin

0.4.2 2023-03-15 12:16 UTC

This package is auto-updated.

Last update: 2024-08-26 01:00:27 UTC


README

CI

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的 setUptearDown 方法。

如果您选择不扩展此基类,也没有问题。只需记住,WorDBless 不会为您设置或清理。查看 BaseTestCase::set_up_wordbless() 和 BaseTestCase::teardown_wordbless() 了解如何自行完成。

什么可行,什么不可行?

免责声明:这仍然是实验性的,所以所有测试都受到欢迎。

基本上,任何WordPress核心函数都将工作。例如 wp_parse_argsadd_query_arg 等。

钩子和过滤器将工作。

大多数使用数据库的东西将不会工作,除非您相信魔法。

WorDBless 增加了什么魔法?

选项

操作选项将工作。 get_optionupdate_optionadd_optiondelete_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_byWP_User 类。

填充默认选项

默认情况下,只有 siteurlhome 选项填充为 http://example.org

如果您想,您可以添加更多默认加载的选项。

只需在您的引导文件中声明一个 dbless_default_options() 函数,并使其返回一个数组,其中键是选项名称,值是选项值。

示例

这是一个简单的例子,仅使用了少量WordPress函数

Jetpack管理UI包

以下是一个更复杂的例子,使用WorDBless来测试REST端点、创建用户和玩转钩子

Jetpack备份包

在本地运行我们的持续集成

首先,在全球范围内将phive安装到您的计算机上。

然后执行以下单个命令。

composer run-script ci