Javascript 如何将null数据类型和number数据类型集成到我的模式中?
我编写了一个模式,发现EventId响应返回为数字或null,但乍一看,我认为响应只是数字,但我错了,它们都是错误的,如下所示: AssertionError:无效类型:null(预期数字):预期false等于true 如何在模式中容纳这两种数据类型,即number或null 架构如下:Javascript 如何将null数据类型和number数据类型集成到我的模式中?,javascript,json,testing,automated-tests,postman,Javascript,Json,Testing,Automated Tests,Postman,我编写了一个模式,发现EventId响应返回为数字或null,但乍一看,我认为响应只是数字,但我错了,它们都是错误的,如下所示: AssertionError:无效类型:null(预期数字):预期false等于true 如何在模式中容纳这两种数据类型,即number或null 架构如下: tests['Status code is 200'] = pm.response.to.have.status(200); const schema = { "definitions": {}, "$
tests['Status code is 200'] = pm.response.to.have.status(200);
const schema =
{
"definitions": {},
"$schema": "http://json-schema.org/draft-06/schema#",
"$id": "http://example.com/root.json",
"type": "array",
"items": {
"$id": "#/items",
"type": "object",
"required": [
"RequestId",
"FleetGroupId",
"RecorderId",
"Status",
"DateRaised",
"DateRaisedString",
"DateRaisedISO",
"RequestedTime",
"RequestedTimeString",
"RequestedTimeISO",
"EventId",
"AlertLevel",
"Media",
"MediaList"
],
"properties": {
"RequestId": {
"$id": "#/items/properties/RequestId",
"type": "number"
},
"FleetGroupId": {
"$id": "#/items/properties/FleetGroupId",
"type": "number"
},
"RecorderId": {
"$id": "#/items/properties/RecorderId",
"type": "string",
"pattern": "^(.*)$"
},
"Status": {
"$id": "#/items/properties/Status",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaised": {
"$id": "#/items/properties/DateRaised",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaisedString": {
"$id": "#/items/properties/DateRaisedString",
"type": "string",
"pattern": "^(.*)$"
},
"DateRaisedISO": {
"$id": "#/items/properties/DateRaisedISO",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTime": {
"$id": "#/items/properties/RequestedTime",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTimeString": {
"$id": "#/items/properties/RequestedTimeString",
"type": "string",
"pattern": "^(.*)$"
},
"RequestedTimeISO": {
"$id": "#/items/properties/RequestedTimeISO",
"type": "string",
"pattern": "^(.*)$"
},
"EventId": {
"$id": "#/items/properties/EventId",
"type": "number"
},
"AlertLevel": {
"$id": "#/items/properties/AlertLevel",
"type": "string",
"pattern": "^(.*)$"
},
"Media": {
"$id": "#/items/properties/Media",
"type": "object",
"required": [
"Time",
"TimeString",
"TimeISOString",
"ContentType",
"MediaUrl",
"JsonUrl",
"ChannelId"
],
"properties": {
"Time": {
"$id": "#/items/properties/Media/properties/Time",
"type": "string",
"pattern": "^(.*)$"
},
"TimeString": {
"$id": "#/items/properties/Media/properties/TimeString",
"type": "string",
"pattern": "^(.*)$"
},
"TimeISOString": {
"$id": "#/items/properties/Media/properties/TimeISOString",
"type": "string",
"pattern": "^(.*)$"
},
"ContentType": {
"$id": "#/items/properties/Media/properties/ContentType",
"type": "string",
"pattern": "^(.*)$"
},
"MediaUrl": {
"$id": "#/items/properties/Media/properties/MediaUrl",
"type": "string",
"pattern": "^(.*)$"
},
"JsonUrl": {
"$id": "#/items/properties/Media/properties/JsonUrl",
"type": "string",
"pattern": "^(.*)$"
},
"ChannelId": {
"$id": "#/items/properties/Media/properties/ChannelId",
"type": "number"
}
}
},
"MediaList": {
"$id": "#/items/properties/MediaList",
"type": "array",
"items": {
"$id": "#/items/properties/MediaList/items",
"type": "object",
"required": [
"Time",
"TimeString",
"TimeISOString",
"ContentType",
"MediaUrl",
"JsonUrl",
"ChannelId"
],
"properties": {
"Time": {
"$id": "#/items/properties/MediaList/items/properties/Time",
"type": "string",
"pattern": "^(.*)$"
},
"TimeString": {
"$id": "#/items/properties/MediaList/items/properties/TimeString",
"type": "string",
"pattern": "^(.*)$"
},
"TimeISOString": {
"$id": "#/items/properties/MediaList/items/properties/TimeISOString",
"type": "string",
"pattern": "^(.*)$"
},
"ContentType": {
"$id": "#/items/properties/MediaList/items/properties/ContentType",
"type": "string",
"pattern": "^(.*)$"
},
"MediaUrl": {
"$id": "#/items/properties/MediaList/items/properties/MediaUrl",
"type": "string",
"pattern": "^(.*)$"
},
"JsonUrl": {
"$id": "#/items/properties/MediaList/items/properties/JsonUrl",
"type": "string",
"pattern": "^(.*)$"
},
"ChannelId": {
"$id": "#/items/properties/MediaList/items/properties/ChannelId",
"type": "number"
}
}
}
}
}
}
};
pm.test('Schema is valid', function() {
var response = pm.response.json();
var result = tv4.validateResult(response, schema, false, true);
pm.expect(result.valid).to.equal(true, result.valid ? null : result.error.message);
});
我现在做了一些研究,似乎你可以有多种数据类型,只需编辑你的类型,例如
"type": ["number", "null"]
但我似乎仍然得到相同的错误断言error:Invalid type:null(预期对象):expected false等于true..因此我想我需要代码来告诉我的模式number或null是可以接受的,但是如何做呢?
AssertionError: Invalid type: null (expected object): expected false to equal true
声明您正在返回null
,其中您的架构验证需要对象
。如果空响应有效,则需要对此进行说明
"type": ["object","null"]