如何使用 Symfony 2 在 phpunit 测试中单击 link

How to Click link in phpunit testing with Symfony 2

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

我正在尝试单击 link 并测试它是否重定向到包含一些文本的页面。 我的代码是:

$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: The current node list is empty." 在代码上>>

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

不知道为什么节点是空的

我们将不胜感激任何帮助! 提前致谢。

首先:这不是单元测试——这是功能测试。

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

顺便说一句,像这样得到 link 更简单,更易读:

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