[英]PHPUnit, asserting html content
在 html 字符串中使用 phpunit 断言某些内容的最佳方法是什么?
在 Zend 应用程序中,有大量断言assertQuery*
可用。 但是如果您不在 Zend 应用程序中呢? assertXml*
看起来不合适。
例如,考虑到更改 id 属性的位置不会失败,您如何断言$htmlString
存在标签<div ... id="myId" ...>...</div>
考试?
我建议你使用一些库来解析 HTML 字符串,然后使用库 API 来编写断言。
有很多很好的 HTML/XML 解析器,例如:
http://symfony.com/doc/current/components/dom_crawler.html
使用它,您可以使用 CSS 选择器、xpath 等访问任何所需的节点,并且您可以检查属性是否独立于其位置而存在。
$crawler = new Crawler($html);
$this->assertEquals(1, $crawler->filter('div#elementId')->count());
您还可以编写一个自动执行此过程的自定义断言,以便断言是:
$this->assertHtmlContainsSelector($html, 'div#elementId');
我遇到了完全相同的问题,找不到现代解决方案,因此我想出了https://packagist.org/packages/phpfui/html-unit-tester
您基本上希望通过验证程序运行尽可能多的生成的html和css。
最好不要针对模板进行验证(除非您想确保没有任何更改,但这是您可能想要的不同条件/测试)。
您真正关心的是HTML(和CSS)的格式正确。 这适应了将来的功能和与数据相关的更改。 您的代码必须产生有效的HTML和CSS。
https://packagist.org/packages/phpfui/html-unit-tester根据w3.org标准进行验证,因此将始终保持最新的HTML规范。
真正有用的单元测试,以确保您所做的事情不会怪异,只能在您针对它编写的浏览器上使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.