如何设置behat来查看我是否在使用动态号码的路线上?

时间:2016-09-12 23:48:59

标签: php bdd behat

我想查看我要去的路线是否是正确的路线,唯一的问题是我每次访问路线时数字都会改变。如何设置我的behat以寻找病房之后的任何数字并让它通过。所以我拥有的是:

然后我应该在" / clinic / participant / create / {id}"

那个括号{id}将永远是动态的,如果可能的话,我想要忽略最后一个id或者在它上面放一些通配符来说明这里传递的任何东西只要它的数字就可以了。

这是我的工作,但我仍然想知道是否有更简单的方法/更清洁的方法来做到这一点。

public function iShouldBeOnRoute($url)
{
    $urlArray = explode('/', $url);
    $urlPath = $this->getSession()->getCurrentUrl();

    $urlPathArray = explode('/', $urlPath);
    $testedUrl = join('/', $urlArray) . end($urlPathArray);

    $this->assertSession()->addressEquals($testedUrl);
}

1 个答案:

答案 0 :(得分:0)

假设此URL是您实际可以看到的现有链接,那么您可以创建一个获取href属性的自定义步骤,然后访问该URL。

例如:

I am on create participant page

此步骤应包含:
- 找到元素 - >获取属性href,将其保存在变量中 - 使用该变量访问

使用的css选择器应为:

a[href*='/clinic/participant/create/']

如果你有id,你只需要检查url是否包含那个id就可以使用strpos!== false并抛出异常或断言。