【发布时间】:2011-11-02 07:48:47
【问题描述】:
我有一个命令行脚本,它生成一些我正在尝试使用 PHPUnit 进行单元测试的 HTML。请注意,此 HTML 浏览器看不到,因此 Selenium 不是解决此问题的正确解决方案。
我只关心比较实际的 HTML 结构。我使用的是assertEquals(),但实际的strings 可能不完全相同,因为存在各种空白字符。
public function testHtmlIsIdentical()
{
$expectedReport = file_get_contents('expected.html');
$this->report->setupSomeData('test data');
$actualReport = $this->report->generateHtml();
$this->assertEquals($expectedReport, $actualReport);
}
我可以做些什么来比较 HTML 的结构(节点)而不是 HTML 的字符串? PHPUnit 是否有允许这样做的功能?是否有用于比较 HTML 的独立库?
解决方案:
PHPUnit 有用于比较 XML 的断言:
assertXmlStringEqualsXmlFile 在这种情况下完美运行:
public function testHtmlIsIdentical()
{
$this->report->setupSomeData('test data');
$this->assertXmlStringEqualsXmlFile('expected.html', $this->report->generateHtml());
}
【问题讨论】:
标签: php html unit-testing phpunit