/ / Symfony Crawler: como verificar se existe um link para uma página em particular - php, symfony, phpunit, functional-testing

Symfony Crawler: como verificar se existe um link para uma página em particular - php, symfony, phpunit, functional-testing

Eu estou escrevendo alguns testes funcionais e quero verificar se o link Editar existe na página se o usuário está logado.

O link é um simples <a href="/profile/22/edit">Edit</a>.

Como posso filtrá-lo usando o componente Crawler do Symfony?

Uma solução é esta:

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

Mas eu gostaria de usar, em vez disso, a seleção de tags, então como posso fazer isso?

Respostas:

2 para resposta № 1

Você pode usar o Crawler ::filterXPath () para verificar a presença ou mesmo a ausência de elementos html correspondentes a todos os tipos de critérios. Para verificar a presença de um link, prefiro usar o ID do elemento, pois é mais provável que ele permaneça constante. Por exemplo, se você modificar seu link da seguinte maneira:

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

Então você pode verificar o link existe assim:

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

Aqui são alguns bons exemplos do tipo de filtros que você pode usar com o XPath.