kerasai / behat-tokenizer
Behat 测试套件的标记替换。
1.0.0-alpha3
2021-11-30 20:50 UTC
Requires
- behat/behat: ^3.5
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