1

I am implementing Behat with Mink, using the following feature:

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"

I have used the Goutte and Sahi, and the error is consistent. I get the error on "Then I should see "agile software development"

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()

How to fix this issue.

4

4 回答 4

1

删除了“我”,然后我应该看到“敏捷软件开发”步骤。

于 2013-08-01T04:01:54.063 回答
1

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

您的FeatureContext文件中可能有另一种方法,它将匹配“我应该看到”导致模棱两可的错误。

我发现当我遇到这个时,我错误地将 should 拼写为大写 S,导致附加了一个新方法。

“我应该看到“blah blah”而不是“我应该看到”blah blah””

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

然后,您将能够正确地用小黄瓜语法编写您的语句,包括您的 I's

于 2017-07-25T12:53:23.550 回答
1

您包括 2 个不同的上下文来定义/实现“相同”的步骤定义。我应该在 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

于 2017-07-27T07:40:11.037 回答
0

这个问题也可以通过减少正则表达式的歧义来避免。

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

最好的。

于 2013-08-08T18:18:40.263 回答