lucatume/codeception-steppify

从 Codeception 模块生成 Gherkin 步骤。

1.0.6 2020-06-05 15:35 UTC

README

Steppify

从 Codeception 模块生成 Gherkin 步骤。

Build Status

安装

使用 Composer 安装此包

composer require --dev lucatume/codeception-steppify

然后根据 Codeception 文档 在项目中添加命令

extensions:
    commands: [tad\Codeception\Command\Steppify]

用法

该命令将生成可用于 Codeception 测试类中的 trait,这些 trait 可由 codeception 模块生成。
例如,我可能想生成 Gherkin 步骤,以便在 Gherkin 功能中使用 Codeception 自有的 [PhpBrowser](!g codeception PhpBrowser 模块) 模块方法

codecept gherkin:steppify PhpBrowser

该命令将在 tests _support/_generated 文件夹中生成 PhpBrowserGherkinSteps.php,一个 PHP trait 文件。要开始使用新方法,只需在 suite Tester 类中添加对 PhpBrowserSteps trait 的 use 语句即可

<?php


/**
 * Inherited Methods
 * @method void wantToTest($text)
 * @method void wantTo($text)
 * @method void execute($callable)
 * @method void expectTo($prediction)
 * @method void expect($prediction)
 * @method void amGoingTo($argumentation)
 * @method void am($role)
 * @method void lookForwardTo($achieveValue)
 * @method void comment($description)
 * @method \Codeception\Lib\Friend haveFriend($name, $actorClass = NULL)
 *
 * @SuppressWarnings(PHPMD)
*/
class AcceptanceTester extends \Codeception\Actor
{
    use _generated\FunctionalTesterActions;
    use _generated\PhpBrowserGherkinSteps;

   /**
    * Define custom actions here
    */
}

现在您可以使用从 PhpBrowser 模块提供的方法编写的 Gherkin 功能,例如

Scenario: methods provided by Codeception PhpBrowser module are available as Gherkin steps

    Feature: I can go on the site homepage

    When I am on page '/'
    Then I can see element 'body.home'

该命令不仅限于 Codeception 默认模块,还可以与其他库提供的自定义模块或为项目自定义的模块一起工作。虽然该命令会尽力支持 Codeception\Module\ 命名空间中的模块,但位于该命名空间之外的模块将需要指定完全限定名称才能正常工作

codecept gherkin:steppify "Acme\Project\Tests\Modules\ModuleOne"

这意味着 gherkin:steppify ModuleNamegherkin:steppify "Codeception\Module\ModuleName" 的快捷方式,您可以提供任何其他兼容的命名空间类。

控制输出方法

虽然该命令会尽力“智能”并帮助生成它所具有的方法签名,但它始终有局限性。因此,方法签名生成逻辑将在生成过程中考虑级联定义

  • 如果可用,请使用配置文件
  • 否则,使用方法文档块
  • 否则,回退到使用内置逻辑

文档块标签

该命令支持两个文档块标签来控制生成

  • @gherkin - 可以是 no 以防止方法生成任何步骤,或逗号分隔的步骤类型列表(givenwhenthen)。

请注意,如果在方法文档块中找到与 Gherkin 步骤兼容的步骤定义,则将使用它们。

配置文件

该命令支持一个 --steps-config <file.yml> 选项,允许指定哪些方法和如何生成步骤。该文件具有以下格式

namespace: Acme\Project
modules:
  PhpBrowser:
    methods:
      amOnPage:
        generates: [given, when]
        step: I visit page :page
  Acme\Modules\SomeModule:
    exclude:
      - methodTwo
    methods:
      - haveAuthKeyInDatabase:
        generates: [given]
        step: I have authorization key :key in database
  <module>:
    exclude:
      - <excluded method one>
      - <excluded method two>
    methods:
      - <method name>:
        generates: [given, when, then]
        step: <step definition template>

如果指定了 namespace 选项,则设置文件中指定的选项将覆盖它。

选项

该命令支持旨在使其输出可控到舒适程度的选项

  • --steps-config <file> - 请参阅 配置文件部分;允许指定步骤定义生成配置文件的路径。
  • --prefix <prefix> - 允许指定应附加到生成的步骤文件名的字符串。
  • --namespace <namespace> -- 允许指定步骤将被生成的命名空间;默认情况下,步骤将在 _generated 命名空间中生成,通过将 Acme\Namespace 传递给此选项,将使特性在 Acme\Project\_generated 命名空间中生成。