6

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

在 Zend 应用程序中有大量assertQuery*可用的断言。但是,如果您不在 Zend 应用程序中呢?assertXml*看起来不合适。

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

4

1 回答 1

10

我建议你使用一些库来解析 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');
于 2013-09-08T18:23:20.477 回答