[英]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.