alleyinteractive / pest-plugin-wordpress
WordPress Pest 集成
Requires
- php: ^8.1
- mantle-framework/testkit: ^1.0
- pestphp/pest: ^2.5
- pestphp/pest-plugin: ^2.0.1
- symfony/var-dumper: ^6.4
Requires (Dev)
- pestphp/pest-dev-tools: ^2.9
README
支持通过 Mantle 框架 将 Pest 集成到您的 WordPress 代码库中。了解 Mantle 测试框架 的相关信息。
如果您想开始使用 Pest 测试您的应用程序,请访问主 Pest 仓库。
Pest 由 Nuno Maduro 创建,并受 Sponsorware 许可协议 保护。它已被开源,现在根据 MIT 许可协议 许可。
概览
WordPress Pest 插件允许使用 Pest 测试框架 测试 WordPress。测试可以用非常简单的方式编写,以“为 PHP 带来测试的乐趣”。
入门
WordPress Pest 插件不需要在您的网站上使用 Mantle 框架(尽管拥有框架可以极大地增强您使用 Pest 的能力)。
通过 Composer 软件包管理器安装 WordPress 插件
composer require alleyinteractive/pest-plugin-wordpress --dev
设置 Pest
注意:如果您正在使用 Mantle 框架,请跳转到 与 Mantle 框架一起使用。
让我们开始将您的项目与 Mantle 和 Pest 集成。本指南假设您的项目位于现有 WordPress 安装内部,作为插件或主题。有关 设置测试框架 的更多信息。
默认配置将使用名为
wordpress_unit_tests
的localhost
数据库以及用户名/密码对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 ); });