在 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);
注:这是我自己开源库的不要脸插件
我正在开发一个由 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);
注:这是我自己开源库的不要脸插件