У меня есть скрипт командной строки, который генерирует HTML, который я пытаюсь протестировать с помощью PHPUnit. Обратите внимание, что этот HTML не виден браузером , поэтому Selenium не является подходящим решением для этого.
Меня интересует только сравнение фактической структуры HTML. Я использую assertEquals()
, но фактические строки
могут быть не совсем идентичными из-за различных пробельных символов.
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:
AssertXmlStringEqualsXmlFileassertXmlStringEqualsXmlFile
прекрасно работает в этом сценарии:
public function testHtmlIsIdentical()
{
$this->report->setupSomeData('test data');
$this->assertXmlStringEqualsXmlFile('expected.html', $this->report->generateHtml());
}