/ / Symfony Crawler: jak sprawdzić, czy istnieje link do określonej strony - php, symfony, phpunit, testy funkcjonalne

Symfony Crawler: jak sprawdzić, czy istnieje link do określonej strony - php, symfony, phpunit, testowanie funkcjonalne

Piszę kilka testów funkcjonalnych i chcę sprawdzić, czy link Edytuj istnieje na stronie, jeśli użytkownik jest zalogowany.

Link jest prosty <a href="/profile/22/edit">Edit</a>.

Jak mogę je filtrować za pomocą komponentu Crawler Symfony?

Jednym z rozwiązań jest to:

$this->assertEquals(1, $crawler->filter("html:contains("<a href="/profile/22/edit">")")->count());

Ale zamiast tego chciałbym użyć wyboru tagu, więc jak mogę to zrobić?

Odpowiedzi:

2 dla odpowiedzi № 1

Możesz użyć robota:filterXPath (), aby sprawdzić obecność lub nawet brak elementów HTML zgodnych ze wszystkimi rodzajami kryteriów. Aby sprawdzić obecność linku, wolę użyć identyfikatora elementu, ponieważ najprawdopodobniej pozostanie on stały. Na przykład jeśli zmodyfikujesz swój link w następujący sposób:

<a id="edit-profile-link" href="/profile/22/edit">Edit</a>

Następnie możesz sprawdzić, czy link istnieje w następujący sposób:

$node = $crawler->filterXPath("//a[@id="edit-profile-link"]");
$this->assertTrue($node->count() == 1), "Edit profile link exists");

Tutaj są dobrymi przykładami filtrów, których można używać z XPath.