swisnl / php-http-fixture-client
PHP-HTTP的Fixture客户端
Requires
- php: ^7.4|^8.0
- php-http/discovery: ^1.14
- php-http/mock-client: ^1.6
- psr/http-factory: ^1.0
- psr/http-message: ^1.0|^2.0
- symfony/string: ^5.4|^6.0|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.16
- guzzlehttp/guzzle: ^7.3
- guzzlehttp/psr7: ^2.1
- phpunit/phpunit: ^9.5
Suggests
- ext-json: Required to mock response headers.
Provides
README
这是一个PHP-HTTP的Fixture客户端,主要用于测试目的。它将请求映射到静态的Fixture文件。
安装
$ composer require --dev swisnl/php-http-fixture-client
用法
// Create client $responseBuilder = new \Swis\Http\Fixture\ResponseBuilder('/path/to/fixtures'); $client = new \Swis\Http\Fixture\Client($responseBuilder); // Send request $response = $client->sendRequest(new Request(...));
Fixture映射
使用此客户端发送的所有请求都将映射到提供路径中定位的静态Fixture文件。通过使用域名和路径片段以及(可选的)方法和/或查询参数(按字母顺序排序)将URL转换为文件路径。将制作一个可能的Fixture路径列表,并按特定顺序处理。
- {path}.{query}.{method}.mock
- {path}.{query}.mock
- {path}.{method}.mock
- {path}.mock
请参阅以下表格中的示例。
域名别名
可以使用setDomainAliases([...])
指示ReponseBuilder
使用域名的别名。当配置后,提供的别名将在将请求转换为文件路径时被标准化。您应提供形式为['alias' => 'abstract']
的别名。
忽略的查询参数
可以使用setIgnoredQueryParameters([...])
指示ReponseBuilder
忽略某些查询参数。当配置后,提供的参数将在将请求转换为文件路径时被忽略。您只需提供参数名,而不是值。这允许您忽略在每个测试执行中都会变化的'动态'参数。参数在url解码后进行严格匹配,因此'foo'将匹配'foo=bar',但不会匹配'foo[]=bar'。
严格模式
可以使用setStrictMode(true)
将ReponseBuilder
设置为严格模式。在严格模式下,仅使用第一个可能的Fixture路径。这意味着方法和查询参数都必须出现在Fixture文件名中,并且不会回退到其他Fixture文件。
助手
请参阅URL助手的https://swisnl.github.io/php-http-fixture-client/#helper。
正文
请求的正文直接从具有.mock扩展名的Fixture文件加载。此文件的任何内容都可以是有效的HTTP响应,例如HTML、JSON,甚至图像。如果找不到Fixture,将抛出MockNotFoundException
异常。此异常具有方便的方法getPossiblePaths()
,它按特定顺序列出所有已检查的文件路径。
头部(可选)
请求的头部从具有.headers扩展名的Fixture文件加载。这是一个包含头部的简单JSON对象,例如。
{ "X-Made-With": "PHPUnit" }
状态(可选)
请求的状态代码从具有.status扩展名的Fixture文件加载。这是一个只包含HTTP状态代码的普通文件。如果没有找到.status文件,将使用200 OK。
Mocks(高级)
此客户端扩展了php-http/mock-client,允许您添加自定义响应和异常,这些响应和异常将忽略Fixture文件。有关更多信息,请参阅mock-client文档。
注意:由于此客户端在底层使用,因此无法设置默认响应。
变更日志
有关最近变更的详细信息,请参阅变更日志。
测试
$ composer test
贡献
安全性
如果您发现任何与安全相关的问题,请通过[email protected]发送电子邮件,而不是使用问题跟踪器。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。
此包是Treeware。如果您在生产中使用它,那么我们要求您为世界买一棵树,以感谢我们的工作。通过为Treeware森林做出贡献,您将为当地家庭创造就业机会,并恢复野生动物栖息地。
SWIS ❤️ 开源
SWIS 是一家来自荷兰莱顿的网站代理机构。我们热爱使用开源软件。