【问题标题】:How to Click link in phpunit testing with Symfony 2如何使用 Symfony 2 在 phpunit 测试中单击链接
【发布时间】:2015-09-02 00:47:47
【问题描述】:

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

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

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

【问题讨论】:

  • 在做任何其他检查之前检查状态响应,所以在节点过滤操作之前移动$this->assertEquals(200, $client->getResponse()->getStatusCode());行。如果响应良好,请在客户端响应中进行调查,看看 die(var_dump( $client->getResponse()->getContent() )) 会发生什么

标签: unit-testing symfony phpunit


【解决方案1】:

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

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

顺便说一句,获取这样的链接更简单,更具可读性:

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

【讨论】:

    猜你喜欢
    • 2015-01-31
    • 1970-01-01
    • 2019-07-08
    • 2021-09-10
    • 2018-09-18
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多