PHPUnit,断言html内容

Al_*_*Al_ 3 php phpunit zend-framework

哪个是用phpunit在html字符串中断言某些内容的最好方法?

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

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

gon*_*lez 6

我建议你使用一些库解析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());
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的方法.考虑到你的`Crawler`的例子,我更喜欢思考php内置函数或预安装库.我将使用`DOMDocument`类似地执行它,即`$ doc = DOMDocument; $ doc-> loadHTML($ HTML); $这 - > assertTrue((布尔)$ doc->的getElementById( 'elementId'));` (2认同)