swisnl/php-http-fixture-client

PHP-HTTP的Fixture客户端

3.1.0 2024-02-23 10:09 UTC

This package is auto-updated.

Last update: 2024-09-18 00:00:45 UTC


README

PHP from Packagist Latest Version on Packagist Software License Buy us a tree Build Status Scrutinizer Coverage Scrutinizer Code Quality Made by SWIS

这是一个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路径列表,并按特定顺序处理。

  1. {path}.{query}.{method}.mock
  2. {path}.{query}.mock
  3. {path}.{method}.mock
  4. {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 是一家来自荷兰莱顿的网站代理机构。我们热爱使用开源软件。