alperakgun/wp_nock

PHP/WordPress 的 WP_Http 服务器模拟库

0.6.1 2019-07-25 19:30 UTC

This package is not auto-updated.

Last update: 2024-09-27 19:47:44 UTC


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 包,您需要确保遵循以下步骤

  1. 检查代码是否有许可证。如果您找不到,您可以尝试联系原始作者并获得使用许可,或者要求他们在兼容的开源许可证下发布。
  2. 检查许可证是否与 GPLv2 兼容,请注意 Apache 2.0 许可证是不兼容的。