我将如何设置 behat 以检查我是否在具有动态号码的路线上?

How would I set up behat to check to see if I am on a route with a dynamic number?

事实上,我想检查一下我要去的路线是否是正确的路线,唯一的问题是每次我访问路线时数字都会改变。我将如何设置我的行为以在病房后寻找任何数字并让它通过。所以我有:

那我应该在“/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);
}

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

例如:

I am on create participant page

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

使用的 css 选择器应该是:

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

如果您有 ID,并且只需要检查 url 是否包含该 ID,您可以使用 strpos !== false 并抛出异常或断言。