在 PHP 单元测试中 XSD 基于模式的 XML 验证

XSD schema based XML validation in PHP unit test

我正在开发一个由 PHP 驱动的应用程序组件,它将一些数据导出到 XML 文件,该文件必须遵循 XSD 文件定义的方案。我知道如何手动验证文件,但如果这可以在单元测试中完成,那将非常方便。

是否有可用的库或框架可以帮助我做到这一点?

一种可能是使用 DOMDocument::schemaValidate or DOMDocument::schemaValidateSource。由于这两种方法中的任何一种 returns 都是布尔值,因此您可以断言返回的值为 true.

PHPUnit XSD validation 库定义了自定义 PHPUnit_Framework_Constraint 使用 DOMDocument::schemaValidate.

优点是在验证失败的时候给出一个有用的error,而不是仅仅说'false is not true'.

用法

$constraint = new Jasny\PHPUnit\Constraint\XSDValidation("myschema.xsd");

$xml = $this->object->doSomething();
$this->assertThat($xml, $constraint);

注:这是我自己开源库的不要脸插件