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 | 为每个选定的元素执行回调函数 |