【发布时间】:2020-07-14 12:57:16
【问题描述】:
我正在使用 Ajv 版本 07。
我正在尝试使用 ajv 验证验证 JSON 响应正文返回的属性值在邮递员中的类型和格式为 double,但是,我无法做到这一点。我已经尝试在网上搜索它,但仍然没有找到任何相关信息。
我尝试输入以下内容:
-
“类型”:“双”,
“格式”:“双”
-
“类型”:“双”,
“格式”:“双”
-
“类型”:“数字”
“格式”:“双”
上述所有尝试均未成功,因为它们都带有一条错误消息:
- 错误:架构中使用了未知类型“double”
或
- 错误:架构中使用了未知格式“double”
谁能帮我解决这个问题?
架构
var Ajv = require ('ajv'),
ajv = new Ajv ({logger:console}),
expectedResponseSchema =
{
"items": {
"required": [
"payments"
],
"properties": {
"payments": {
"items": {
"required": [
"amount"
]
"properties": {
"amount": {
"$id": "#/items/properties/payments/items/properties/amount",
"type": "number",
"format": "double"
}
}
}
}
}
}
邮递员测试
var currentSchPmExpTest;
try{
currentSchPmExpTest = ' expectedResponseSchema variable';
pm.expect(ajv.validate(expectedResponseSchema, jsonData)).to.be.true;
pm.test('Test 1 - PASSED - expectedResponseSchema variable data matches schema returned by body response!', () => true);
} catch(e){
pm.test('Test 1 - FAILED - Expected data does not match response body data!', () => {throw new Error(e.message + " in " + currentSchPmExpTest)});
}
身体反应
[
{
"payments": [
{
"amount": 2.200000045367898,
}
]
}
]
【问题讨论】:
-
您的完整架构在应用程序中是什么样的以及您的测试脚本是什么样的。这感觉就像是信息的一半。
-
@DannyDainton 架构和邮递员测试已添加。
-
@DannyDainton 正文回复已添加。
-
更新了我的答案,让您的测试更易于管理。我不知道这是否有助于提高价值 - 您可以尝试使用
pattern并在其中添加一些正则表达式?我已经看到multipleOf与number一起使用,但我没有尝试过。 -
不确定,但这是stackoverflow.com/q/55021811的副本吗?
标签: javascript postman json-schema-validator ajv