oscarotero/psr7-unitesting

此包已被废弃,不再维护。未建议替代包。

用于测试psr-7兼容类的库

v3.0.1 2016-05-28 16:42 UTC

This package is auto-updated.

Last update: 2021-10-05 12:06:37 UTC


README

Scrutinizer Code Quality Build Status

一个简单的库,用于在psr-7兼容的http消息中执行单元测试。

它使用symfony/dom-crawlersymfony/css-selector库来解析和测试正文中的html。并且使用Guzzle作为http客户端

此包提供了一个包含w3c vnu验证器(用于验证html)的Java文件,但如果你没有安装(或者不想安装)Java,可以使用REST API(较慢)。

使用示例

use Psr7Unitesting\Assert;

class AppTest extends PHPUnit_Framework_TestCase
{
	public function testRemote()
	{
		//Execute a GET request and assert the response:

		Assert::get('http://example.com')
			->statusCode(200)
			->header('Content-Type', 'text/html')
			->hasHeader('Cache-Control')
			->hasNotHeader('Expires')

			->assertBody()
				->isReadable()
				->isSeekable()
				->end() //back to Response

			->assertHtml()
				->isValid() //use w3c vnu validator
				->has('meta[property="og:title"]')
				->hasNot('blink')
				->contains('a.home-link', 'Go to home')
				->notContains('p', '') //empty paragraphs

				//Execute more tests for each element individually
				->map('img', function ($img) {
					$this->assertNotEmpty($img->attr('alt'));
				});
	}

	public function testLocal()
	{
		//Assert local psr-7 instances
		$app = new App();
		$response = $app->dispatch('/post/34');

		Assert::create($response)
			->statusCode(200);
	}
}

可用的断言

消息

方法 描述
hasHeader 断言存在一个头
hasNotHeader 断言不存在一个头
header 断言一个头有特定的值
protocolVersion 断言消息的协议版本
body 断言正文内容(作为字符串)
assertBody 返回一个Stream断言实例

请求

通过以下添加扩展了Message

方法 描述
方法 断言方法值
requestTarget 断言请求目标值
uri 断言uri值(作为字符串)
assertUri 返回一个Uri断言实例

服务器请求

通过以下添加扩展了Request

方法 描述
hasServerParam 断言存在一个服务器参数
serverParam 断言服务器参数值
hasCookieParam 断言存在一个cookie参数
cookieParam 断言cookie参数值
hasQueryParam 断言存在一个查询参数
queryParam 断言查询参数值
hasUploadedFile 断言存在一个上传文件
hasParsedBody 断言在解析后的正文中存在一个参数
parsedBody 断言解析后的正文中的值
hasAttribute 断言存在一个属性
attribute 断言属性值

响应

通过以下添加扩展了Message

方法 描述
statusCode 断言状态码值
reasonPhrase 断言原因短语值
assertHtml 返回一个Html断言实例

Uri

方法 描述
scheme 断言方案值
authority 断言权限值
userInfo 断言用户信息值
host 断言主机值
port 断言端口值
path 断言路径值
query 断言查询值
fragment 断言片段值

Stream

方法 描述
size 断言流大小
isSeekable 断言流可寻址
isNotSeekable 断言流不可寻址
isWritable 断言流可写
isNotWritable 断言流不可写
isReadable 断言流可读
isNotReadable 断言流不可读
assertHtml 返回一个Html断言实例

Html

方法 描述
count 断言与选择器匹配的元素数量
has 断言至少有一个元素与选择器匹配
hasNot 断言没有任何元素与选择器匹配
contains 断言至少有一个元素与选择器匹配且包含文本
notContains 断言没有任何元素与选择器匹配且包含文本
isValid 断言html值符合w3c标准
map 为每个选定的元素执行回调函数