behat、小黄瓜和正则表达式:是否使用 "not"

behat, gherkin and regex: using "not" or not

我有 behat 条件,我想用函数覆盖,使用 "not": Given this is happeningGiven this is NOT happening。我找不到有效的正则表达式。

这是我想要实现的目标:

/**
 * @Given /^this is<regexCheckingNOT> happening$/
 */
public function thisIsHappening($not)
{
    if ($not) {
        // do this
    }

    // do that anyway
}

我尝试了这些但没有成功:

我找不到办法做到这一点。

您可以通过将“not”设为可选来完成您想要做的事情:

/**
 * @Given /^this is( not)? happening$/
 */
public function thisIsHappening($not = null)
{
    if (null !== $not) {
        // do this
    }

    // do that anyway
}

您需要提供默认值(即 null),因为此参数不会出现在 "this is happening" 步骤中。

但是,我会考虑将这两种方法分开来使它们更简单:

/**
 * @Given this is happening
 */
public function thisIsHappening()
{
    // do that anyway
}

/**
 * @Given this is not happening
 */
public function thisIsNotHappening()
{
    // do this

    // do that anyway if you need something to happen in both cases
    $this->thisIsHappening();
}

为了进一步接受答案,您还可以使用这样的东西:

/**
 * @Given /^this is(| not)? happening$/
 */
public function thisIsHappening($not)
{
    if ($not === " not") {
        // do this
    } else {
    // do that anyway
    }
}

它遵循与已接受的规则相同的规则,但也意味着您不必为 $not 设置默认值,因为它可以是“not”或空白。