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 № 1Você 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.