有没有一种方法可以使assertPathIs()忽略部分URL?

时间:2020-03-03 21:47:54

标签: php laravel testing laravel-dusk

在制作Laravel Dusk测试功能时,我正在尝试检查应用程序中的路径。但是,我的应用程序中的URL会根据用户或他们所查看的内容而变化(例如/Test/123/testing:在这种情况下,123可以是数字的任意组合。)

是否可以忽略中间部分?

$this->browse(function (Browser $browser) {
    $browser->loginAs('email@email.com')
            ->visit('/test')
            ->assertPathIs('/test')
            ->assertSee('LinkText')
            ->clickLink('LinkText')
            ->assertPathIs('/test/(CanBeAnything)/testing');
});

1 个答案:

答案 0 :(得分:0)

看看the code,我们可以看到在文本通过preg_quote()运行之后,实际上正在执行正则表达式匹配:

$pattern = str_replace('\*', '.*', preg_quote($path, '/'));

这意味着您可以使用*进行通配符搜索,因此应该可以:

$this->browse(function (Browser $browser) {
    $browser->loginAs('email@email.com')
            ->visit('/test')
            ->assertPathIs('/test')
            ->assertSee('LinkText')
            ->clickLink('LinkText')
            ->assertPathIs('/test/*/testing');
});