alleyinteractive/pest-plugin-wordpress

v0.5.0 2023-12-08 17:54 UTC

This package is auto-updated.

Last update: 2024-09-11 23:46:30 UTC


README

支持通过 Mantle 框架 将 Pest 集成到您的 WordPress 代码库中。了解 Mantle 测试框架 的相关信息。

如果您想开始使用 Pest 测试您的应用程序,请访问主 Pest 仓库

Pest 由 Nuno Maduro 创建,并受 Sponsorware 许可协议 保护。它已被开源,现在根据 MIT 许可协议 许可。

概览

WordPress Pest 插件允许使用 Pest 测试框架 测试 WordPress。测试可以用非常简单的方式编写,以“为 PHP 带来测试的乐趣”。

Example Test

入门

WordPress Pest 插件不需要在您的网站上使用 Mantle 框架(尽管拥有框架可以极大地增强您使用 Pest 的能力)。

通过 Composer 软件包管理器安装 WordPress 插件

composer require alleyinteractive/pest-plugin-wordpress --dev

设置 Pest

注意:如果您正在使用 Mantle 框架,请跳转到 与 Mantle 框架一起使用

让我们开始将您的项目与 Mantle 和 Pest 集成。本指南假设您的项目位于现有 WordPress 安装内部,作为插件或主题。有关 设置测试框架 的更多信息。

默认配置将使用名为 wordpress_unit_testslocalhost 数据库以及用户名/密码对 root/root 安装 WordPress。所有常量都可以使用 wp-tests-config.php 文件或单元测试的引导文件覆盖。

假设您在项目中尚未设置 Pest,请创建一个 tests 文件夹并运行 pest --init 命令

./vendor/bin/pest --init

替换 Pest 测试用例

打开上述命令为您创建的项目中的 tests/Pest.php 文件。寻找类似以下内容的行

// uses(Tests\TestCase::class)->in('Feature');

将其替换为以下内容

uses(\Mantle\Testkit\Test_Case::class)->in(__DIR__);

// Install WordPress via Mantle.
\Mantle\Testing\install();

Mantle 还使用 composer-wordpress-autoloader,因此您需要加载 vendor/wordpress-autoload.php 而不是仅加载 vendor/autoload.php

最后,您可以从命令行直接运行 Pest

./vendor/bin/pest

现在,您可以使用 Mantle 测试框架 与 Pest 一起轻松简单地测试您的 WordPress 插件。您的 IDE 还能够进行类型提示,以便您可以使用测试框架。

与 Mantle 框架一起使用

在现有的 Mantle 项目中引入 WordPress Pest 插件将允许您通过几个命令安装 Pest。

通过 Composer 软件包管理器安装 WordPress 插件并运行 mantle pest:install WP-CLI 命令

composer require alleyinteractive/pest-plugin-wordpress --dev

wp mantle pest:install

就这样!Pest 已成功安装在您的 Mantle 项目上。您现在可以通过 Pest 运行您的 pest 测试。

./vendor/bin/pest

外壳也可以通过运行 pest:test WP-CLI 命令生成对害虫友好的测试。

wp mantle pest:test <TestName>

编写测试

更多信息可以在 测试框架 页面上找到。

use function Pest\PestPluginWordPress\from;
use function Pest\PestPluginWordPress\get;

it( 'should load the homepage', function () {
    get( '/' )
        ->assertStatus( 200 )
        ->assertSee( 'home' );
} );

it( 'should load with a referrer', function () {
    from( 'https://laravel.net.cn/' )
        ->get( '/' )
        ->assertStatus( 200 );
});