用 phpunit 断言 html 字符串中的某些内容的最佳方法是什么?
在 Zend 应用程序中有大量assertQuery*
可用的断言。但是,如果您不在 Zend 应用程序中呢?assertXml*
看起来不合适。
例如,考虑到更改 id 属性的位置不会使测试失败,您将如何断言标签<div ... id="myId" ...>...</div>
存在?$htmlString
用 phpunit 断言 html 字符串中的某些内容的最佳方法是什么?
在 Zend 应用程序中有大量assertQuery*
可用的断言。但是,如果您不在 Zend 应用程序中呢?assertXml*
看起来不合适。
例如,考虑到更改 id 属性的位置不会使测试失败,您将如何断言标签<div ... id="myId" ...>...</div>
存在?$htmlString
我建议你使用一些库来解析 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');