簡體   English   中英

PHPUnit,斷言 html 內容

[英]PHPUnit, asserting html content

在 html 字符串中使用 phpunit 斷言某些內容的最佳方法是什么?

在 Zend 應用程序中,有大量斷言assertQuery*可用。 但是如果您不在 Zend 應用程序中呢? assertXml*看起來不合適。

例如,考慮到更改 id 屬性的位置不會失敗,您如何斷言$htmlString存在標簽<div ... id="myId" ...>...</div>考試?

我建議你使用一些庫來解析 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');

我遇到了完全相同的問題,找不到現代解決方案,因此我想出了https://packagist.org/packages/phpfui/html-unit-tester

您基本上希望通過驗證程序運行盡可能多的生成的html和css。

最好不要針對模板進行驗證(除非您想確保沒有任何更改,但這是您可能想要的不同條件/測試)。

您真正關心的是HTML(和CSS)的格式正確。 這適應了將來的功能和與數據相關的更改。 您的代碼必須產生有效的HTML和CSS。

https://packagist.org/packages/phpfui/html-unit-tester根據w3.org標准進行驗證,因此將始終保持最新的HTML規范。

真正有用的單元測試,以確保您所做的事情不會怪異,只能在您針對它編寫的瀏覽器上使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM