fezor/behat-stepler

运行特定 behat 步骤的简单 CLI 工具

v1.1.2 2016-04-25 09:56 UTC

This package is not auto-updated.

Last update: 2024-09-14 17:37:29 UTC


README

简单的 behat 扩展,允许您从 CLI 运行特定的 gherkin 步骤。

为什么?

Gherkin 提供了一种统一的描述业务需求的方式,但如果我们想进行端到端测试呢?让我们假设我们有一个包含几个组件的项目:iOS 应用程序、Android 应用程序、单页应用前端和后端的 API。对于所有列出的组件都有很好的工具:cucumber.jscalabashbehat。但如果你开始实现端到端测试,你将面临一个小问题:大多数场景都有一些先决条件,这些条件应在后端设置。

所以……这个扩展做什么?它只是提供了一个在您需要时执行特定步骤的方法。例如,您可以在 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 接口的对象的简单对象)。

钩子

请注意,只有 BeforeStepAfterStep 钩子可用。如果您想清除数据库,例如,这种方法的解决方案将是特定的步骤,该步骤将清除所有测试数据。

贡献

请随时贡献!任何帮助或想法都将很有用!