PHP 单元测试中基于 XSD 架构的 XML 验证


XSD schema based XML validation in PHP unit test

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

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

一种可能性是使用 DOMDocument::schemaValidateDOMDocument::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);

注意:这是我自己的开源库的无耻插件。