与Mink意外的步骤错误

时间:2013-08-01 03:41:43

标签: bdd behat mink

我正在使用Mink实现Behat,使用以下功能:

Scenario: Search for another phrase that exists
Given I am on "/wiki/Main_Page"
When I fill in "search" with "Behavior Driven Development"
And I press "searchButton"
Then I should see "agile software development"

我使用了Goutte和Sahi,错误是一致的。我收到错误"然后我应该看到"敏捷软件开发"

Scenario: Search for another phrase that exists              # features/wikipedia.feature:13
Given I am on "/wiki/Main_Page"                            # WikipediaFeatureContext::visit()
When I fill in "search" with "Behavior Driven Development" # WikipediaFeatureContext::fillField()
And I press "searchButton"                                 # WikipediaFeatureContext::pressButton()
Then I should see "agile software development"
  Ambiguous match of "I should see "agile software development"":
  to `/^I should see "([^"]*)"$/` from AccountFeatureContext::iShouldSee()
  to `/^(?:|I )should see "(?P<text>(?:[^"]|\\")*)"$/` from WikipediaFeatureContext::assertPageContainsText()

如何解决此问题。

4 个答案:

答案 0 :(得分:1)

从中移除“我”然后我应该看到“敏捷软件开发”步骤。

答案 1 :(得分:1)

您的小黄蜂语句匹配多个方法的正则表达式。

您的FeatureContext文件中可能有另一种方法与“我应该看到”相匹配,从而导致模糊错误。

我发现当我遇到这个时,我错误拼写了大写字母S会导致附加一个新方法。

“我应该看到”等等等等“ 代替 “我应该看到”等等等等“

请检查您的功能文件是否有任何拼写错误的“我应该看到...”语句,并检查您的功能上下文文件并删除额外的方法。

然后,您就可以正确地用小黄瓜语法编写语句,包括我的

答案 2 :(得分:1)

您要包含2个不同的上下文来定义/实现&#34;相同的&#34;步骤定义。我应该看到&#34;某事&#34;步骤定义在MinkContext中免费提供,因此我建议将其从自定义上下文中删除:AccountFeatureContext和WikipediaFeatureContext并包括MinkContext:

http://behat.org/en/latest/user_guide/context.html#multiple-contexts

如果你在方法定义中添加了额外的逻辑,我建议创建一个新的句子来解释你准备看到的确切内容,并使用子上下文来重用现有的实现:

http://docs.behat.org/en/v2.5/guides/4.context.html

除此之外,考虑使用与Sahi不同的其他驱动程序,它不再保留:

https://packagist.org/packages/behat/mink-sahi-driver

答案 3 :(得分:0)

通过使正则表达式不那么模糊,也​​可以避免这个问题。

您上面使用的方法仍然可以让您编写模糊的步骤。

最佳。