0

我在为 Behat 中的 BDD 功能和 Yii 框架中的 Mink 设置定义自己的步骤时遇到了问题。

我已经按照MinkExtension-example的说明成功安装了带有 Mink 扩展的 Behat 。

毕竟,我在myapp/private_html/中的文件夹结构如下(省略了一些深层嵌套的文件夹):

├───bin
├───commands
│   └───shell
├───components
├───config
├───controllers
├───features
│   ├───bootstrap
│   └───php54_bootstrap
├───models
├───tests
├───vendor
│   ├───behat
│   │   ├───behat
│   │   │   ├───bin
│   │   │   ├───features
│   │   │   │   ├───annotations
│   │   │   │   ├───bootstrap
│   │   │   │   └───closures
└───views

上述链接MinkExtension-example中作为示例提供的功能可以正常工作。但是当我定义自己的步骤时

  Scenario: presence of menu items
    Given I am on "/"
    Then I should see the following: "Home, About, Contact"

我明白了

1 scenario (1 undefined)
2 steps (1 passed, 1 undefined)
0m2.288s

有一个建议

You can implement step definitions for undefined steps with these snippets:

/**
 * @Then /^I should see the following: "([^"]*)"$/
 */
public function iShouldSeeTheFollowing($arg1)
{
    throw new PendingException();
}

问题是:我应该把这段代码放在哪里?我试着把它放进去

myapp\private_html\features\bootstrap\FeatureContext.php

以及在

myapp\private_html\vendor\behat\behat\features\bootstrap\FeatureContext.php 

但步骤仍未定义。

那么,应该在哪里定义步骤?

4

2 回答 2

1

您永远不必更改供应商的代码(我想您正在使用作曲家)。不是你的代码。

您的代码必须添加到 features\bootstrap\FeatureContext.php。

也许问题是您的 FeatureContext 类没有扩展 MinkContext 而是 BehatContext。您会在 FeatureContext 的文件中找到注释。将 FeatureContext 的父类从 BehatContext 更改为 MinkContext。

最后,要查看上下文可以看到的所有句子,请运行“./bin/behat -dl”。如果您在更改上下文之前运行此命令,您可以看到 behat 的句子很少。

于 2013-09-01T13:09:51.923 回答
0

如果您想查看 behat mink 的预定义步骤和功能。

vendor/bin/behat -dl 

您将看到可用于您的网站的步骤。

现在已经有一个步骤可以使用

Scenario: presence of menu items
 Given I am on "/"
 Then I should see "Home, About, Contact"
 Theres nothing like "Then I should see following".
于 2013-09-03T11:38:30.207 回答