ddelnano / dredd-hooks-php
PHP hooks 用于 Dredd 测试工具
Requires
- php: >=7.2
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~8.0
- squizlabs/php_codesniffer: ^3.5
- dev-master
- 2.0.0
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.2
- 1.0.1
- 1.0.0
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- dev-dependabot/npm_and_yarn/examples/laravel/semver-and-laravel-elixir-and-gulp-5.7.2
- dev-dependabot/npm_and_yarn/json-schema-and-jsprim-0.4.0
- dev-dependabot/npm_and_yarn/examples/laravel/bootstrap-sass-3.4.1
- dev-dependabot/npm_and_yarn/examples/laravel/minimatch-and-laravel-elixir-and-gulp-3.1.2
- dev-dependabot/composer/examples/laravel/phpunit/phpunit-4.8.28
- dev-upgrade-phpunit-to-v5
- dev-testing-the-build
- dev-add-php-73-to-travis
- dev-add-port-hooks-server-test
This package is auto-updated.
Last update: 2024-09-11 13:00:22 UTC
README
关于
此软件包包含一个 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
使用
- 在
hooks.php
中创建一个钩子文件
use Dredd\Hooks; Hooks::before("/test > GET", function(&$transaction) { // do any before setup necessary });
非常重要 请确保传递给任何 Dredd\Hooks
方法的闭包使用对 $transaction
变量的引用!这是必要的,以便在闭包的局部作用域中持久化对变量的更改时,不需要从闭包返回 $transaction
变量。
- 使用 dredd 运行它
dredd apiary.apib localhost:3000 --language php --hookfiles ./hooks.php
API
Dredd\Hooks
类提供了以下方法 before
、after
、before_all
、after_all
、before_each
、after_each
、before_validation
和 before_each_validation
。这些方法对应于 Dredd 在对 blueprint/apiary.apib 文件中定义的 API 端点进行请求时将运行的事件。before
、before_validation
和 after
钩子通过 事务名称 识别
通配符
必须使用 1.1 或更高版本
在编写针对不同 API 端点的钩子时,通常需要为类似端点使用相同的钩子。例如,在测试管理员功能时,请求必须通过具有管理员权限的用户进行身份验证。对于所有需要此操作的钩子,而不是为每个钩子编写一个钩子,可以使用以下内容。
Hooks::before('Admin > *', function(&$transaction) { // This will be executed for any transaction with name starting with 'Admin > ' });
这将执行任何“嵌套”在 'Admin' 下的交易。例如,以下事务名称将执行回调:'Admin > 登录'、'Admin > 测试' 等。
如何贡献
- 分叉它
- 创建您的功能分支(git checkout -b my-newfeature)
- 提交您的更改(git commit -am '添加一些功能')
- 推送(git push origin my-new-feature)
- 创建一个新的 Pull Request
测试
在做出贡献时,非常重要的一点是不要破坏现有功能。此项目使用 PHPUnit 进行单元测试,并使用 nodejs 进行 Cucumber 测试。
依赖关系
- Docker。它负责处理php和nodejs的依赖关系。
可以通过以下步骤运行测试套件
- 运行phpunit和Cucumber测试
make test
有关集成测试的更多详细信息,请参阅dredd-hooks-template 仓库
更多信息
有关示例和更多信息,请访问wiki