kagency / http-replay
用于回放和比较HTTP请求和响应的库
Requires
- kore/data-object: @stable
- phuedx/tnetstring: @dev
- symfony/http-kernel: @stable
Requires (Dev)
- pdepend/pdepend: @stable
- phpmd/phpmd: @stable
- phpunit/phpunit: @stable
- sebastian/phpcpd: @stable
- squizlabs/php_codesniffer: @stable
This package is auto-updated.
Last update: 2024-09-08 00:14:38 UTC
README
这是一个用于在测试中回放请求和响应的库。它允许过滤响应以删除不需要断言的值。
支持的工具
支持录制的(读取器)
支持框架(消息处理程序)
工作流程
使用此测试辅助工具的工作流程可能如下
首先使用MitmDump记录一些HTTP交互,执行如下命令
mitmdump -P http://my-website:80/ -p 8080 --anticache -z -w recordFile.tns
然后可以回放存储的文件,以匹配您的应用程序——在我这个例子中是Symfony2堆栈——通过实现如下的集成测试
$messageHandler = new MessageHandler\Symfony2(); $filter = new ResponseFilter\Dispatcher(array( new ResponseFilter\Json(), new ResponseFilter\Headers(array( 'date', 'etag', )), )); $reader = new Reader\MitmDump($messageHandler); $interactions = $reader->readInteractions('recordFile.tns'); foreach ($interactions as $interaction) { $actualResponse = $app->runRequest($interaction->request); $this->assertEquals( $filter->filterResponse($messageHandler->simplifyResponse($interaction->request, $interaction->response)), $filter->filterResponse($messageHandler->simplifyResponse($interaction->request, $actualResponse)) ); }
此示例仅实现了一组非常基本的响应过滤器。您可以实现条件响应过滤器,它仅对某些请求URL生效,并过滤出响应中的某些JSON属性。
此示例假定$app是某个Symfony2应用程序,其中runRequest()方法接收一个请求对象并返回一个响应对象。
响应过滤器
目前实现的所有响应过滤器列表
分发器
接受要应用于响应的响应过滤器数组。您通常想使用这个来轻松地应用一组过滤器。
Json
尝试解析JSON以使测试中的比较更容易。同时使其他响应过滤器成为可能,例如JsonFilter过滤器。
不接收任何参数。
JsonFilter
从JSON响应中过滤掉定义的属性集。如果您的JSON响应包含日期或版本之类的字段,则特别敏感。
接收一个属性列表作为构造函数参数。
Headers
实现HTTP头部的黑名单。从响应中删除这些头部。这特别有用,例如,可以删除Date和Etag头部。
接收一个要删除的头部列表作为构造函数参数。
MultipartMixed
替换multipart/mixed响应中的随机边界字符串,使其可以进行比较。
不接收任何参数。
ConditionalPathRegexp
接受两个参数
- 匹配请求路径的正则表达式
- 聚合过滤器
仅当正则表达式匹配请求路径时,才应用聚合过滤器。
验证构建
您可以通过运行ant来验证构建
ant
这使用composer安装所有必需的工具,然后运行测试和静态源代码验证。您也可以手动运行所有工具,例如
vendor/bin/phpunit