我正在开发一个PHP驱动的应用程序组件,它将一些数据导出到XML文件,该文件必须遵循XSD文件定义的方案。我知道如何手动验证文件,但如果可以在单元测试中完成这将非常方便。
是否有任何可用的库或框架可以帮助我做到这一点?
一种可能性是使用 DOMDocument::schemaValidate
或 DOMDocument::schemaValidateSource
。由于这两个方法中的任何一个都返回布尔值,因此您可以断言返回的值是true
。
这个 PHPUnit XSD 验证库定义了一个自定义PHPUnit_Framework_Constraint
使用DOMDocument::schemaValidate
。
优点是,当验证失败时,它会给出一个有用的错误,而不仅仅是说"false 不是真的"。
用法
$constraint = new Jasny'PHPUnit'Constraint'XSDValidation("myschema.xsd");
$xml = $this->object->doSomething();
$this->assertThat($xml, $constraint);
注意:这是我自己的开源库的无耻插件。