hmaus/spas

此包已被弃用且不再维护。未建议替代包。

API 端到端测试

v0.1.0-alpha2 2016-11-30 09:02 UTC

This package is not auto-updated.

Last update: 2020-08-21 20:39:53 UTC


README

这听起来像是 "spa",但是复数形式。
它使用真实的 HTTP 请求测试您的 API 描述与给定环境。

Minimum PHP Version Build Status Test Coverage Code Climate

注意

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和预构建示例以获取最佳实践。