2014-11-04 109 views
0

我正在測試HTML構建器。我想斷言生成的內容與預期的內容匹配,但我希望在空白方面有一些靈活性。如何比較HTML而忽略空白?

具體來說,我不在乎標籤之間的空白是縮進還是縮進或者它們全部在一行上。我只關心標籤,順序,屬性和內容。

我該如何聲明兩個HTML片段相等?

回答

0

自我回答,因爲我沒有在任何地方SO找到這個:基於一個PHP implementation of an HTML minifier

/** 
* 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) 
    ); 
} 

+0

另請參閱[此解決方案](http://stackoverflow.com/questions/7167788/phpunit-asserting-identical-html-structure-regardless-of-whitespace),它使用PHPUnit的'assertXML'系列函數。 – bishop 2015-01-07 20:55:12