rmiller/behat-spec

Behat 和 PhpSpec 集成

0.5.0 2017-01-27 08:42 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:41:38 UTC


README

Scrutinizer Code Quality Build Status

什么是

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);
}

运行与该上下文相关的特性通常会引发致命异常。相反,您将获得一个简单的错误,并提供了创建缺失类规范的选项。

Product not found

创建规范后,将提供运行 phpspec run 的选项

Spec created

它将询问创建类

Created Product?

Product created

再次运行 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 扩展,这些扩展也可以独立使用

PhpSpec

Behat