我正在使用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()
如何解决此问题。
答案 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不同的其他驱动程序,它不再保留:
答案 3 :(得分:0)
通过使正则表达式不那么模糊,也可以避免这个问题。
您上面使用的方法仍然可以让您编写模糊的步骤。
最佳。