繁体   English   中英

PHPUnit,断言 html 内容

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM