kerasai/behat-tokenizer

Behat 测试套件的标记替换。

1.0.0-alpha3 2021-11-30 20:50 UTC

This package is auto-updated.

Last update: 2024-08-29 04:48:54 UTC


README

Behat Tokenizer 允许您在 Behat 测试套件中设置和使用标记。

安装 Behat Tokenizer

使用 Composer 安装 Behat tokenizer

$> composer require --dev kerasai/behat-tokenizer

配置 Behat Tokenizer

TokenizerExtension 类添加到 behat.yml 文件中,标记将被处理。

  extensions:
    Kerasai\Behat\Tokenizer\TokenizerExtension: { }

在上下文中使用 Behat Tokenizer

为了在上下文类中使用 Behat Tokenizer,简单实现 \Kerasai\Behat\Tokenizer\TokenizerAwareInterface,上下文将调用带有标记的 ::setTokenizer 方法。

此外,您可以使用 use \Kerasai\Behat\Tokenizer\TokenizerAwareTrait 来轻松实现接口。

从那里您可以在上下文中访问标记器

<?php

use \Kerasai\Behat\Tokenizer\TokenizerAwareInterface;
use \Kerasai\Behat\Tokenizer\TokenizerAwareTrait;

class MyContext implements TokenizerAwareInterface {
  
  use TokenizerAwareTrait;
  
  /**
   * @Given something named :arg1
   */
  public function AssertSomethingNamed($arg1) {
    $something = new Something();
    $something->setName($arg1);
    $something->save();
    $this->tokenizer->setToken("[something:$arg1]", $something->id());
  }
  
}

标记将在 Behat 功能中的所有参数内被处理

Feature: View a something
  In order see something
  As an visitor to the website
  I need to view pages with somthing

  Scenario: Something page
    Given something named "great_thing"
    When I am on "something/[something:great_thing]"
    Then I should see the heading "great_thing"

自定义标记替换器

除了显式设置和替换标记之外,还可以实现自定义替换器类来执行标记替换。

替换器类必须实现 \Kerasai\Behat\Tokenizer\Replacer\ReplacerInterface,并且可以扩展 \Kerasai\Behat\Tokenizer\Replacer\ReplacerBase 以方便使用。

请参阅 \Kerasai\Behat\Tokenizer\Replacer\TimestampReplacer

为了使用自定义替换器类,它们必须在 behat.yml 配置中向 Behat Tokenizer 公开。在最简单的情况下,可以使用类名。

  extensions:
    Kerasai\Behat\Tokenizer\TokenizerExtension:
      replacers:
        - Kerasai\Behat\Tokenizer\Replacer\TimestampReplacer:
            timezone: 'America/New_York'
        - Custom\Replacer\ReplacerNoConfig
        - Custom\Replacer\ReplacerWithConfig:
            config_option_1: abc
            config_option_2: def
        - special_key:
            class: Custom\Replacer\ReplacerHasSpecialKey
            config_option_1: abc
            config_option_2: def