Искатель Symfony: как проверить, существует ли ссылка на определенную страницу
Я пишу некоторые функциональные тесты и хочу убедиться, что ссылка на редактирование существует на странице, если пользователь вошел в систему.
Ссылка является простой <a href="/profile/22/edit">Edit</a>
.
Как я могу отфильтровать его с помощью компонента обходчика Symfony?
Одно из решений заключается в следующем:
$this->assertEquals(1, $crawler->filter('html:contains("<a href="/profile/22/edit">")')->count());
Но я хотел бы использовать вместо этого выбор тегов, так как я могу это сделать?
1 answers
Вы можете использовать Crawler::filterxpath() для проверки наличия или даже отсутствия html-элементов, соответствующих всевозможным критериям. Чтобы проверить наличие ссылки, я предпочитаю использовать идентификатор элемента, так как он, скорее всего, останется постоянным. Например, если вы измените свою ссылку следующим образом:
<a id="edit-profile-link" href="/profile/22/edit">Edit</a>
Затем вы можете проверить, существует ли ссылка следующим образом:
$node = $crawler->filterXPath('//a[@id="edit-profile-link"]');
$this->assertTrue($node->count() == 1), "Edit profile link exists");
Вот несколько хороших примеров фильтров, которые вы можете использовать с XPath.