PHPUnit,断言html内容

时间:2013-09-05 18:02:12

标签: php zend-framework phpunit

使用phpunit在html字符串中断言某些内容的最佳方法是什么?

在Zend应用程序中,有一些断言assertQuery*可用。但是如果你不在Zend应用程序中? assertXml*看起来不合适。

例如,考虑到更改id属性的位置不会使测试失败,您如何断言<div ... id="myId" ...>...</div>中存在标记$htmlString

2 个答案:

答案 0 :(得分:5)

我建议您使用某些库解析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());

答案 1 :(得分:0)

我遇到了完全相同的问题,并且找不到现代的解决方案,因此我想到了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规范保持一致。

真正有用的单元测试,以确保您所做的事情不会古怪,只能在您针对它编写的浏览器上使用。