【问题标题】:Behat with Mink unexpected step errorBehat 与 Mink 意外的步骤错误
【发布时间】:2013-08-01 03:41:42
【问题描述】:

我正在使用 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()

如何解决这个问题。

【问题讨论】:

    标签: bdd behat mink


    【解决方案1】:

    从 Then I should see "agile software development" 步骤中删除“I”。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

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

      【讨论】:

        【解决方案3】:

        您包含 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

        【讨论】:

          【解决方案4】:

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

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

          最好的。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-01-29
            • 2013-09-11
            • 1970-01-01
            • 2020-11-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多