Behat featurecontext可重用动作正则表达式问题

时间:2016-07-22 12:52:43

标签: regex behat

我试图在我的功能上下文中使用操作中的可选部分编写函数。

/**
* Function to scroll into view.
*
* @When /^I scroll "([^"]*)" into view( of type "([^"]*)")?$/g
*/
public function iScrollIntoView($locator, $type = "id") {
    // Some logic here.
}

所以这个想法是我可以在我的behat脚本中使用:I scroll "foo" into viewI scroll "foo" into view of type "bar"

所以我希望类型部分是可选的,而正则表达式似乎在在线正则表达式测试中运行良好,它似乎不能在我的behat脚本中工作。

当我将And I scroll "foo" into view放入我的behat脚本时,它不会识别该功能。我的正则表达式有问题吗?或者这是一个问题。

1 个答案:

答案 0 :(得分:1)

经过一番艰苦的思考,解决方案非常符合逻辑。导致失败的主要问题是正则表达式中的global => g,因此在删除它之后就会识别出该行为。

/**
* Function to scroll into view.
*
* @When /^I scroll "([^"]*)" into view( of type "([^"]*)")?/
*/

第二个问题是分组,在我的函数中我使用第二个组作为我的参数,但是这是可选的类型(类型为" foo")并且实际上并不是那个变量组。因此,在向函数添加第三个参数后,我能够检索它。

public function iScrollIntoView($locator, $of_type_provided = FALSE, $type = "id") {
    // Some logic here.
}

我希望将来对其他人有用。