10quality/wpmvc-addon-testsuite

WordPress MVC (WPMVC) 框架扩展的测试套件。

dev-main 2023-02-10 22:23 UTC

This package is auto-updated.

Last update: 2024-09-11 01:59:51 UTC


README

安装

使用 required-dev 作为 composer 命令安装

composer install 10quality/wpmvc-addon-testsuite --dev

测试用例类

使用以下替代默认的 PHPUnit 测试用例

use WPMVC\Addons\PHPUnit\TestCase;

class MyTest extends TestCase
{
    // Your test methods
}

此类将允许您使用以下断言方法

示例

use WPMVC\Addons\PHPUnit\TestCase;

class MyTest extends TestCase
{
    public function testAction()
    {
        // Run
        do_action( 'init' );
        // Assert
        $this->assertDidAction( 'init' );
    }
}

测试您的插件

您的插件主类需要 WordPress MVC 主类(桥梁)实例才能正常工作。`TestCase` 类包含 `getBridgeMock()` 方法,允许您通过模拟桥梁类来测试您的插件。

示例

use WPMVC\Addons\PHPUnit\TestCase;
use MyAddon;

class MyAddonTest extends TestCase
{
    public function testInit()
    {
        // Prepare
        $bridge = $this->getBridgeMock();
        $addon = new MyAddon( $bridge );
        // Run
        $addon->init();
        // Assert
        $this->assertAddedAction( 'init' );
        $this->assertHasRegisterScript( 'my-js' );
    }
}

上面的示例测试了插件类 `MyAddon` 中的 `init()` 方法,它接收初始化为模拟的 `$$bridge`。示例断言在方法调用期间已添加动作钩子和已注册脚本。

您可以模拟 `Bridge` 以便自己使用

use WPMVC\Addons\PHPUnit\TestCase;
use WPMVC\Addons\PHPUnit\Mocks\Brige;
use MyAddon;

class MyAddonTest extends TestCase
{
    public function testInit()
    {
        // Prepare
        $bridge = $this->getMockBuilder( Brige::class )
            ->disableOriginalConstructor()
            ->getMock();
        $addon = new MyAddon( $bridge );
        // Run
        $addon->init();
        // Assert
        $this->assertAddedAction( 'init' );
        $this->assertHasRegisterScript( 'my-js' );
    }
}

重置测试套件数据

您可以通过在 `setUp` 或 `tearDown` 方法中调用函数 `wpmvc_addon_phpunit_reset()` 来重置测试套件数据。

模拟的 WordPress 核心函数

以下 WordPress 核心函数被模拟并通过 composer 包含

  • __
  • _e
  • add_action
  • add_filter
  • add_query_arg
  • add_submenu_page
  • admin_url
  • apply_filters
  • do_action
  • esc_attr
  • esc_html
  • esc_html_e
  • esc_url
  • get_filesystem_method
  • get_locale
  • get_stylesheet_directory
  • home_url
  • request_filesystem_credentials
  • sanitize_text_field
  • site_url
  • submit_button
  • wp_enqueue_script
  • wp_enqueue_style
  • wp_register_script
  • wp_register_style
  • WP_Filesystem

模拟的 WordPress 核心常量

如果它们未定义,以下常量将通过 composer 模拟

  • ABSPATH

模拟的 WordPress 核心类

以下 WordPress 类被模拟并通过 composer 包含

  • WP_Filesystem