Есть ли способ, чтобы assertPathIs () игнорировал часть URL? - PullRequest
1 голос
/ 04 марта 2020

Выполняя функцию теста 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 голосов
/ 04 марта 2020

Взглянув на код , мы видим, что на самом деле выполняется сопоставление с регулярным выражением после того, как текст пройден через 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');
});
...