hmaus / spas
API 端到端测试
Requires
- php: >=7.0
- guzzlehttp/guzzle: ^6.2
- hmaus/reynaldo: ^0.1.2
- hmaus/spas-parser: ^1.2.0
- jonnyw/php-phantomjs: ^4.5
- justinrainbow/json-schema: ^2.0
- sebastian/diff: ^1.4
- symfony/config: ^3.1
- symfony/console: ^3.1
- symfony/dependency-injection: ^3.1
- symfony/event-dispatcher: ^3.1
- symfony/filesystem: ^3.1
- symfony/http-foundation: ^3.1
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3
- codegyre/robo: 1.0.0-RC2
- henrikbjorn/lurker: dev-master
- hmaus/branda: dev-master
- hmaus/drafter-installer: ^1.0
- hmaus/drafter-php: ^4.0
- hmaus/spas-parser-apib: ^1.0.0
- johnkary/phpunit-speedtrap: ^1.0
- phpunit/phpunit: ^5.0
- symfony/var-dumper: ^3.1
This package is not auto-updated.
Last update: 2020-08-21 20:39:53 UTC
README
这听起来像是 "spa",但是复数形式。
它使用真实的 HTTP 请求测试您的 API 描述与给定环境。
注意
Spas 目前处于 alpha 阶段,因此其 API 可能会发生变化!
如何工作/示例
在 example
目录中有一个运行的示例,包括一个说明文档供您参考。
为了使用 spas,您需要
- 您的 API 描述解析器,例如 drafter 用于 API 蓝图
- spas 本身,它对 API 描述是中立的
- spas-request-parser 实现,以理解您的 API 描述解析结果
运行 spas 的样子
- 从您的 API 描述解析器获取解析结果
- 用它调用 spas
安装
从源代码安装
安装 spas 及其配套软件的推荐方式是使用 composer。
API 描述解析器
在这个例子中,我们将安装 drafter 来与 API 蓝图一起使用。
composer require hmaus/drafter-installer
现在 配置 drafter 安装程序。确保实际上安装了 drafter,通常您会在配置期间添加一个脚本来调用 composer install-drafter
,并使用 vendor/bin/drafter -v
进行检查。
请求解析器
如果您的解析器尚未支持,请参阅 创建请求解析器的指南
composer require hmaus/spas-parser-apib
这将为您获取 \Hmaus\Spas\Parser\Apib\ApibParsedRequestsProvider
以放入 spas 的 request_provider
选项
Spas
现在我们可以安装 spas 本身
composer require hmaus/spas
使用默认的 composer 配置,spas 现在应作为 vendor/bin/spas
可用。
钩子
钩子系统使得 spas 非常灵活。它允许您添加代码片段来操作请求、断言结果等。
有几个预构建的钩子供您查看和尝试。
只需浏览 /src/Hook
来查看预构建的钩子;所有以 Hello
开头的都是学习示例。
运行钩子
在 spas 命令中添加一个选项
--hook "Hmaus\Spas\Hook\HelloWorld"
如您所见,钩子是通过它们的完全限定类名传递的。因此,只要这些类位于自动加载器中,您就可以立即使用它们。
要传递多个钩子,只需为每个钩子重复 --hook
选项。
--hook "Hmaus\Spas\Hook\HelloWorld" --hook "Hmaus\Spas\Hook\HelloHookData"
传递数据到钩子
您的许多钩子应该在对它们能做什么方面具有灵活性,因此您希望从外部配置它们。
我们建议使用JSON格式将数据传递到钩子中,如下所示
--hook "Hmaus\Spas\Hook\HelloHookData" --hook_data $'{ "Hmaus-Spas-Hook-HelloHookData": { "apikey": "ewifvweilfvf" }, "Your-Namespace-SomeOtherHook": { "hook-data-option": "contains all data passed to all hooks" } }'
请注意,你需要将反斜杠替换为破折号来使用--hook_data
。
如果你知道如何使用反斜杠使其工作,请告诉我。
编写自己的钩子
一旦你检查了现有的钩子,你应该已经收集到了所有需要知道的信息。
创建一个新的类,使其可加载,扩展\Hmaus\Spas\Hook\Hook
,实现一个抽象方法,并检查钩子API和预构建示例以获取最佳实践。