如何使用 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()
我是使用 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()