【发布时间】:2014-11-04 03:35:21
【问题描述】:
我正在对一个 HTML 构建器进行单元测试。我想断言生成的内容与预期的内容相匹配,但我希望在空白方面具有一定的灵活性。
具体来说,我不在乎标签之间的空白是制表符缩进还是空格缩进,或者它们是否都在一行上。我只关心标签、它们的顺序、它们的属性和它们的内容。
如何断言两个 HTML 片段相等?
【问题讨论】:
我正在对一个 HTML 构建器进行单元测试。我想断言生成的内容与预期的内容相匹配,但我希望在空白方面具有一定的灵活性。
具体来说,我不在乎标签之间的空白是制表符缩进还是空格缩进,或者它们是否都在一行上。我只关心标签、它们的顺序、它们的属性和它们的内容。
如何断言两个 HTML 片段相等?
【问题讨论】:
自我回答,因为我在任何地方都没有找到这个:
/**
* Compare two HTML fragments.
*/
protected function assertEqualHtml($expected, $actual)
{
$from = ['/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s', '/> </s'];
$to = ['>', '<', '\\1', '><'];
$this->assertEquals(
preg_replace($from, $to, $expected),
preg_replace($from, $to, $actual)
);
}
【讨论】:
assertXML 系列函数。