2015-09-02 2 views
1

Я новичок в PHPUnit Тестирование с Symfony 2.Как Нажмите на ссылку в тестировании PHPUnit с Symfony 2

Я пытаюсь нажать ссылку и проверить, является ли его переадресовывает на страницу, которая содержит текст. Моего код:

$client = static::createClient(); 

$crawler = $client->request('GET', '/Site'); 

$link = $crawler->filter('a:contains("Click for Report")')->eq(1)->link(); 

$crawler->$client->click($link); 

$this->assertEquals(200, $client->getResponse()->getStatusCode()); 

$this->assertContains('Detail Report',$client->getResponse()->getContent()); 

Каждый раз, когда я запускаю этот тест говорит об ошибке: «InvalidArgumentException: Список текущего узла пуст.» по коду >>

$link = $crawler->filter('a:contains("Detail Report")')->eq(1)->link(); 

Я не знаю, почему этот узел пуст.

Любая помощь будет высоко оценена! Спасибо заранее.

+0

проверка ответ статуса перед делать любой другой чек, так переместить линию '$ this-> assertEquals (200, $ клиент -> getResponse() -> getStatusCode()); 'перед работой фильтра узла. Если ответ хороший, исследуйте ответ клиента и посмотрите, что appen с помощью 'die (var_dump ($ client-> getResponse() -> getContent())) – Matteo

ответ

1

Прежде всего: это не модульное тестирование - это функциональный тест.

Что касается вашего теста: теоретически, он должен работать, но без HTML трудно сказать, где проблема. Скорее всего, это просто eq(1), поскольку аргумент eq() основан на 0, а не на 1, поэтому вы выбираете вторую ссылку, содержащую «Нажмите для отчета», и, возможно, на странице есть только одна такая ссылка.

Кстати, получить ссылку, как это проще и более удобным для чтения:

$crawler->selectLink('Click for Report')->link()

+0

Спасибо большое. Это сработало ! –

Смежные вопросы