alperakgun / wp_nock
PHP/WordPress 的 WP_Http 服务器模拟库
0.6.1
2019-07-25 19:30 UTC
Requires
- php: >=5.3
Requires (Dev)
README
WP_Http 服务器模拟库 for PHP/WordPress,灵感来自 nock JavaScript 库。
使用方法
您可以将 wp_nock 作为开发 composer 包依赖项安装。
$ composer require --dev alperakgun/wp_nock
在 tests/bootstrap.php 中引入它
require dirname( dirname( __FILE__ ) ) . '/vendor/alperakgun/wp_nock/src/class-wp-nock.php';
使用 PHPUnit,您可以测试任何使用
- WP_Http 类(如 wp_remote_get, wp_remote_request, wp_remote_post)的代码。
- 或者 wp_redirect, wp_safe_redirect 等。
use Alperakgun\Testing\WP_Nock;
use Alperakgun\Testing\WP_Nock_Exception;
class Test_My_Cool_WordPress_Plugin extends WP_UnitTestCase {
const TEST_URL = 'https://www.wordpress.com/test';
# Testing wp_remote_get, or wp_remote_post is similar
public function test_wp_nock_wp_remote_get() {
$nock = new WP_Nock();
$nock->set_up();
$nock->get(
self::TEST_URL,
array(
'response' => array(
'code' => 200,
),
'body' => '{"foo":"bar"}',
)
);
$result = wp_remote_get( self::TEST_URL );
$this->assertSame( $result['response']['code'], 200 );
$this->assertSame( $result['body'], '{"foo":"bar"}' );
$nock->tear_down();
}
测试 wp_redirect 需要一个回调
public function test_wp_nock_wp_redirect_with_callback() {
$nock = new WP_Nock();
$nock->set_up();
$nock->redirect(
self::TEST_URL,
function( $payload ) {
$this->assertSame( $payload['location'], self::TEST_URL );
return false;
}
);
wp_redirect( self::TEST_URL );
$nock->tear_down();
}
另一种测试 wp_redirect 的方法是抛出异常
public function test_wp_nock_wp_redirect() {
$nock = new WP_Nock();
$nock->set_up();
$nock->redirect( self::TEST_URL );
try {
wp_redirect( self::TEST_URL );
} catch ( WP_Nock_Exception $ex ) {
$payload = $ex->get_payload();
$this->assertSame( $payload['location'], self::TEST_URL );
}
$nock->tear_down();
}
}
贡献
我们欢迎贡献。请毫不犹豫地发送拉取请求,提出建议,提交错误报告,或只是提出问题。我们承诺我们会很友好。
对于 PHP,我们使用 PHP Code Sniffer 和 WordPress 编码标准。
# Run this once at the beginning to set up some test instrumentation.
composer run lint
# Run this whenever you start testing to start Docker containers
composer run lint:fix
测试
我们喜欢测试 :) 在开始之前,请确保运行它们!
可以使用以下命令运行 PHP 单元测试
# Run this once at the very beginning to set up some test instrumentation.
composer run test:setup
# Run this whenever you start testing to start Docker containers
composer run test:run-docker
# Run PHP unit tests
composer run test
我们在这里帮助
我们鼓励您在任何时候寻求帮助。我们希望您的 wp_nock 首次体验是美好的,所以不要害羞。如果您想知道为什么某事是这样的,或者一个决策是如何做出的,您可以给问题添加 [类型] 问题 标签或以“问题:”为前缀。
许可证
wp_nock 根据 GNU 通用公共许可证 v2(或更高版本) 许可。
所有贡献的材料应与 GPLv2 兼容。这意味着如果您拥有这些材料,您同意根据 GPLv2 许可证许可它们。如果您贡献的代码不是您自己的,例如添加来自其他开源项目的组件或添加一个 npm
包,您需要确保遵循以下步骤
- 检查代码是否有许可证。如果您找不到,您可以尝试联系原始作者并获得使用许可,或者要求他们在兼容的开源许可证下发布。
- 检查许可证是否与 GPLv2 兼容,请注意 Apache 2.0 许可证是不兼容的。