如何使用Symfony 2单击phpunit测试中的链接

时间:2015-09-02 00:47:48

标签: unit-testing symfony phpunit

我是使用Symfony 2进行PHPUnit测试的新手。

我正在尝试单击链接并测试其是否重定向到包含某些文本的页面。 我的代码是:

$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();

我不知道为什么节点是空的。

任何帮助都会受到高度赞赏! 提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先:这不是单元测试 - 这是一项功能测试。

关于你的测试:从理论上讲,它应该可行,但如果没有HTML,很难说出问题出在哪里。有可能只是eq(1),因为eq()的参数是从0开始的,而不是从1开始的,所以你选择的第二个链接包含“Click for Report”,也许只有页面上有1个这样的链接。

顺便说一句,获得这样的链接更简单,更易读:

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