ddelnano/dredd-hooks-php

PHP hooks 用于 Dredd 测试工具


README

Build Status Packagist Packagist Packagist license

关于

此软件包包含一个 PHP Dredd 钩子处理器,它提供了一个在 Dredd API 测试框架和 PHP 环境之间的桥梁,以简化 Dredd 提供的测试钩子的实现。在 PHP 中编写 Dredd 钩子,以将 API Blueprint 与您的 PHP 项目连接起来。

不确定这些 Dredd 钩子是什么?请阅读有关 Dredd 文档 它们

以下是一些钩子可以用于的示例

  • 加载数据库测试数据
  • 测试步骤或步骤后的清理
  • 处理身份验证和会话
  • 在事务之间传递数据(从响应中保存状态到 stash)
  • 修改从蓝图生成的请求
  • 更改生成的期望
  • 设置自定义期望
  • 通过记录信息进行调试

示例

<?php

use Dredd\Hooks;

Hooks::beforeAll(function(&$transaction) {

    // do any necessary setup
});

安装

Composer

要求

  • 必须具有 PHP 版本 7.2 或更高版本。较旧版本的 PHP 可能会工作,但尚未测试。

dredd-hooks-php 可以通过使用 Composer 简单安装。

composer require ddelnano/dredd-hooks-php --dev

使用

  1. hooks.php 中创建一个钩子文件
use Dredd\Hooks;

Hooks::before("/test > GET", function(&$transaction) {

    // do any before setup necessary
});

非常重要 请确保传递给任何 Dredd\Hooks 方法的闭包使用对 $transaction 变量的引用!这是必要的,以便在闭包的局部作用域中持久化对变量的更改时,不需要从闭包返回 $transaction 变量。

  1. 使用 dredd 运行它

dredd apiary.apib localhost:3000 --language php --hookfiles ./hooks.php

API

Dredd\Hooks 类提供了以下方法 beforeafterbefore_allafter_allbefore_eachafter_eachbefore_validationbefore_each_validation。这些方法对应于 Dredd 在对 blueprint/apiary.apib 文件中定义的 API 端点进行请求时将运行的事件。beforebefore_validationafter 钩子通过 事务名称 识别

通配符

必须使用 1.1 或更高版本

在编写针对不同 API 端点的钩子时,通常需要为类似端点使用相同的钩子。例如,在测试管理员功能时,请求必须通过具有管理员权限的用户进行身份验证。对于所有需要此操作的钩子,而不是为每个钩子编写一个钩子,可以使用以下内容。

Hooks::before('Admin > *', function(&$transaction) {

    // This will be executed for any transaction with name starting with 'Admin > '
});

这将执行任何“嵌套”在 'Admin' 下的交易。例如,以下事务名称将执行回调:'Admin > 登录'、'Admin > 测试' 等。

如何贡献

  1. 分叉它
  2. 创建您的功能分支(git checkout -b my-newfeature)
  3. 提交您的更改(git commit -am '添加一些功能')
  4. 推送(git push origin my-new-feature)
  5. 创建一个新的 Pull Request

测试

在做出贡献时,非常重要的一点是不要破坏现有功能。此项目使用 PHPUnit 进行单元测试,并使用 nodejs 进行 Cucumber 测试。

依赖关系

  • Docker。它负责处理php和nodejs的依赖关系。

可以通过以下步骤运行测试套件

  1. 运行phpunit和Cucumber测试
make test

有关集成测试的更多详细信息,请参阅dredd-hooks-template 仓库

更多信息

有关示例和更多信息,请访问wiki