rmiller / behat-spec
Behat 和 PhpSpec 集成
Requires
- php: >=5.4
- behat/behat: ^3.0,>=3.0.4
- phpspec/phpspec: ^3.0
- rmiller/caser: ^0.1
Replaces
- rmiller/behat-spec-extension: 0.5.0
- rmiller/error-extension: 0.5.0
- rmiller/exemplify-extension: 0.5.0
- rmiller/phpspec-extension: 0.5.0
- rmiller/phpspec-run-extension: 0.5.0
This package is not auto-updated.
Last update: 2024-09-24 02:41:38 UTC
README
什么是
Behat 和 PhpSpec 之间的集成。
- 在运行 behat 时,为遇到的任何缺少的类创建规范。
- 在运行 behat 时,为遇到的任何缺少的方法添加示例。
- 在此之后执行 phpspec 运行命令以添加所描述的类/方法。
为什么
当不是通过 Behat 上下文通过 UI 运行应用程序,而是用于实现领域模型时,这很有用。有关使用 Gherkin 功能驱动领域建模的更多信息,请参阅 Everzet 在 Modelling by Example 上的文章。
在运行包含不存在的新类或方法的新上下文的特性时,将获得致命错误。如果使用 PhpSpec,下一步将是使用 describe 命令开始指定该类。此扩展集提供了 Behat 和 PhpSpec 之间的集成,因此您可以选择自动运行描述缺失类的 describe 命令而不是收到致命错误。
它还使用我的 ExemplifyExtension,这样您就可以以类似的方式自动为缺少的方法添加示例。
以这种方式描述类或方法后,可以使用 phpspec run
命令自动创建类或模型。由于这是大多数情况下的典型下一步,因此此扩展通过询问您是否希望进行下一步来自动化该过程。
示例
以下是从上面链接的博客文章中使用的示例
/**
* @Given a product named :name and priced £:price was added to the catalogue
*/
public function aProductNamedAndPricedWasAddedToTheCatalogue($name, Money $price)
{
$aProduct = Product::namedAndPriced($name, $price);
$this->catalogue->add($aProduct);
}
运行与该上下文相关的特性通常会引发致命异常。相反,您将获得一个简单的错误,并提供了创建缺失类规范的选项。
创建规范后,将提供运行 phpspec run
的选项
它将询问创建类
再次运行 Behat 将为 namedAndPriced
方法产生类似的过程。其中将为规范添加方法的示例,并将方法添加到类中。
如何
安装
此软件包为 PhpSpec 和 Behat 提供了一个扩展。为了实现完整的功能,两者都需要启用。
要求
- Behat 3.0+
- PhpSpec 3.0+
- PHP 5.6+
需要扩展
$ composer require --dev rmiller/behat-spec:^0.5
为了使用 PHPSpec 2.0 系列的 BehatSpec,请使用 0.3.*
版本系列。
$ composer require --dev rmiller/behat-spec:0.3.*
要运行 phpspec 运行命令,您需要使用最新的 phpspec >2.1。否则,该功能将静默失败。
配置
通过在您的 behat.yml
中指定其类来激活 Behat 扩展。
# behat.yml # ... extensions: RMiller\BehatSpec\Extension\BehatSpecExtension\BehatExtension: path: bin/phpspec #default value is bin/phpspec config: path/to/phpspec.yml #optional
通过在您的 phpspec.yml
中指定其类来激活 PhpSpec 扩展。
# phpspec.yml extensions: RMiller\BehatSpec\Extension\BehatSpecExtension\PhpSpecExtension: ~
可以为 phpspec run
命令的运行提供其他配置
它默认将 phpspec 的路径指定为 bin/phpspec
,并在 describe 命令之后运行。可以按如下方式覆盖它们
# phpspec.yml rerunner: path: vendor/bin/phpspec commands: [describe, exemplify, your_own_fancy_command] config: path/to/phpspec.yml #optional extensions: RMiller\BehatSpec\Extension\BehatSpecExtension\PhpSpecExtension: ~
一些详细信息
此软件包汇集了一些其他 PhpSpec 和 Behat 扩展,这些扩展也可以独立使用