fezor / behat-stepler
运行特定 behat 步骤的简单 CLI 工具
Requires
- php: >=5.4.0
- behat/behat: ^3.0.12
Requires (Dev)
- phpspec/phpspec: ~2.2
This package is not auto-updated.
Last update: 2024-09-14 17:37:29 UTC
README
简单的 behat 扩展,允许您从 CLI 运行特定的 gherkin 步骤。
为什么?
Gherkin 提供了一种统一的描述业务需求的方式,但如果我们想进行端到端测试呢?让我们假设我们有一个包含几个组件的项目:iOS 应用程序、Android 应用程序、单页应用前端和后端的 API。对于所有列出的组件都有很好的工具:cucumber.js、calabash、behat。但如果你开始实现端到端测试,你将面临一个小问题:大多数场景都有一些先决条件,这些条件应在后端设置。
所以……这个扩展做什么?它只是提供了一个在您需要时执行特定步骤的方法。例如,您可以在 behat
中实现所需的步骤,然后只需从您的 cucumber.js
测试套件中调用这些步骤。
用法
您可以通过 composer 安装此扩展
$ composer require --dev fesor/behat-stepler
然后您需要将扩展添加到您的 behat.yml
default:
suites:
default:
contexts:
- FeatureContext
extensions:
Fesor\Stepler:
这就完了。现在您只需调用单个步骤
$ behat --run-steps "Alice have user account:
| email | alice@example.com |
| password | alice_password |"
步骤执行结果
有时获取执行步骤的结果很有用。假设您有一个步骤定义,该定义创建新用户。通常您需要获取创建的用户的 ID(例如,与 API 交互)。此步骤定义看起来可能如下所示
/** * @Given :name have account */ public function createUser($name) { $user = $this->fakeUserFactory($name); $this->userRepository->add($user); return $user->getDTO(); }
然后,如果我们使用 --return-step-results
选项运行此步骤
$ behat --run-steps "Bob have account" --return-step-result
我们将得到类似的结果
{"id": 1, "name": "Bob"}
数据将被序列化为 json_encode
,因此您应该返回某种类型的 DTO,该 DTO 可以轻松序列化为 JSON(数组、实现 JsonSerializable
接口的对象的简单对象)。
钩子
请注意,只有 BeforeStep
和 AfterStep
钩子可用。如果您想清除数据库,例如,这种方法的解决方案将是特定的步骤,该步骤将清除所有测试数据。
贡献
请随时贡献!任何帮助或想法都将很有用!