oscarotero / psr7-unitesting
此包已被废弃,不再维护。未建议替代包。
用于测试psr-7兼容类的库
v3.0.1
2016-05-28 16:42 UTC
Requires
- php: >=5.5
- guzzlehttp/guzzle: ~6.2
- phpunit/phpunit: *
- psr/http-message: ^1.0
- symfony/css-selector: ~3.0
- symfony/dom-crawler: ~3.0
- symfony/process: ~3.0
Requires (Dev)
README
一个简单的库,用于在psr-7兼容的http消息中执行单元测试。
它使用symfony/dom-crawler和symfony/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 |
为每个选定的元素执行回调函数 |