使用PHPUnit 4测试有效的HTML5输出

时间:2014-03-22 18:27:37

标签: phpunit

如何对PHP函数/脚本的HTML输出进行单元测试,特别是检查输出是否为HTML5有效?

目前,可以在PHPUnit中测试功能,并使用在线复制/粘贴验证器进行演示。但如果将它集成到PHPUnit测试中会更好。

是否有标准的方法来处理这类事情,或者主要是在创建插入内容的函数上使用常规单元测试,然后确保它在浏览器/ W3C Validator中看起来正确?

不再适用的旧版PHPUnit的类似问题: Unit tests for HTML Output?

2 个答案:

答案 0 :(得分:0)

您要寻找的是行为测试。看看Behat

答案 1 :(得分:0)

Twine项目(http://twineproject.sourceforge.net/doc/phphtml.html)取代了复制/粘贴手动过程。它可能有用;它仍然每次都将HTML发送到w3C站点,这对于单元测试来说并不理想。 (W3C说他们所有的东西都是开源的,所以你可以下载它并在本地运行......虽然我找不到下载链接!)

另一种方法是使用DomDocument::validate()但是它需要在内部引用DTD,正如这个答案https://stackoverflow.com/a/15245834/841830所解释的那样,HTML5没有DTD。

(我假设您的意思是您拥有返回HTML5字符串的函数,并且您希望对这些函数进行单元测试:如果您想测试Web应用程序的整个输出,例如通过Apache运行并看到在浏览器中,我会使用CasperJS或Selenium。但这是高级功能测试,运行速度比单元测试慢,所以我建议单元测试可以进行单元测试:我仍然找不到离线HTML5验证器Casper / Phantom / Slimer也不适用于Selenium!)