Yii 如何(在何处)在Behat/Mink中定义特征步骤

Yii 如何(在何处)在Behat/Mink中定义特征步骤,yii,bdd,behat,mink,Yii,Bdd,Behat,Mink,我在Yii框架的Behat和Mink设置中为BDD功能定义自己的步骤时遇到问题 我已经按照中的说明成功地安装了带有Mink扩展的Behat 在所有这些之后,我在myapp/private\u html/中有以下文件夹结构(省略了一些嵌套较深的文件夹): 在上述链接中作为示例提供的功能可以正常工作。但当我定义自己的步骤时 Scenario: presence of menu items Given I am on "/" Then I should see the follow

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

我已经按照中的说明成功地安装了带有Mink扩展的Behat

在所有这些之后,我在myapp/private\u html/中有以下文件夹结构(省略了一些嵌套较深的文件夹):

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

  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 
但这一步骤仍不明确


那么,应该在哪里定义这些步骤呢

您永远不必更改供应商的代码(我想您使用的是composer)。这不是你的代码

必须将代码添加到features\bootstrap\FeatureContext.php

可能问题在于FeatureContext类不扩展MinkContext,而是扩展BehatContext。您将在FeatureContext的文件中找到注释。将FeatureContext的父类从BehatContext更改为MinkContext


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

如果您想查看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".

你说这两个文件夹vendor和bin是公共的,尽管它们在private_html文件夹中?我将尝试向文件features\bootstrap\FeatureContext.php添加步骤定义的建议。不,对不起。我已经删除了答案中的这一部分。我试图将我的步骤添加到features\bootstrap\FeatureContext.php,与以前一样,该步骤仍然未定义。事实上,我不理解你提到的背景概念,但我试着做了一些事情:1。第一次尝试是添加$this->useContext('mink',new MinkContext());进入构造函数-但没有任何更改2。然后我添加了use Behat\MinkExtension\Context\MinkContext;-同样,一切都没有改变。顺便说一句,你说将FeatureContext的父文件夹从BehatContext更改为MinkContext是什么意思?当然,当我运行时,该步骤不会显示。/bin/behat-dl抱歉:我的意思是。。。父类。您完全正确,然后我应该看到以下不是预定义的步骤。这正是我想在FeatureContext文件中定义它的原因。复制所有给定片段,包括features/bootstrap/FeatureContext.php文件下的注释。你在复制所有的东西吗?没错,我复制了所有的东西。这一步还没有确定。我想这是由于我在example.hmm中使用的behat.yml文件中的设置造成的,我认为“Home,About,Contact”中的逗号可能不起作用。因为如果你关注函数,它只传递一个参数($arg1)。所以肯定是你所声明的论点。你想在页面上找到三样东西:主页、关于、联系。但是函数只传递一个参数。明白了吗?从一开始就很明显,也就是说,这个事实就是创建一个新步骤的原因,我称之为
,然后我会看到以下内容:“…”
。问题是,即使我在FeatureContext中明确定义了这个步骤,它仍然没有定义。抱歉,如果我在发布问题时不清楚。
Scenario: presence of menu items
 Given I am on "/"
 Then I should see "Home, About, Contact"
 Theres nothing like "Then I should see following".