是否可以在mule上验证json模式?



在Postman测试中,我可以验证响应是否具有给定的模式:

var jsonObject = pm.response.json();
var schemaResponse = {
"type": "object",
"properties": {
"ok": {
"type": "boolean"
},
"operation_id": {
"type": "string"
},
"push_ids": {
"type": "array",
"items": [
{
"type": "string"
}
]
},
"message_ids": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "string"
}
]
},
"content_urls": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "string"
}
]
},
"localized_ids": {
"type": "array",
"items": [
{
"type": "string"
},
{
"type": "string"
}
]
}
}
}

pm.test("Response Schema Validation", function() {
var result = tv4.validateResult(jsonObject, schemaResponse);
pm.expect(result.valid).to.be.true;
});

我可以在Mule 4的Munit测试中做同样的事情吗?

没有现成的选项。如果需要一个简单的解决方法,可以使用json-schema-validator作为验证步骤之一。这样做的问题是它不会抛出AssertionException,而是抛出JSON:SCHEMA_NOT_HONOURED错误,因此您的测试将被视为出错而不是预期的Failed。因此,我不推荐这种方法。

正确的方法是创建自己的自定义断言并使用Run Custom Event Processor。官方的MuleSoft文档(链接)对如何实现自定义断言类进行了简单而良好的解释,描述了该过程。

基本上,您需要创建一个Java类来实现MunitAssertion接口,并使用Java库来进行模式验证。您可以从各种可用的Java库中选择,例如everit-org/json-schema

最新更新