Как проверить, имеет ли значение формат и / или тип double, используя проверку схемы ajv? - PullRequest
1 голос
/ 02 апреля 2020

Я использую Ajv версии 07.

Я пытаюсь проверить, что значение свойства, возвращаемое телом ответа JSON, имеет тип и формат double в почтальоне, используя проверку ajv, однако, Я не могу этого сделать. Я попытался найти его в Интернете, но все еще ничего не нашел.

Я попытался набрать следующее:

  • "type": "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,

      }
    ]
  }
]

1 Ответ

0 голосов
/ 02 апреля 2020

Я не уверен, откуда вы получаете тип и формат, но согласно AJV документам (может быть устаревшим), который не является действительным type.

enter image description here

РЕДАКТИРОВАТЬ:

Из вашего обновления я бы порекомендовал изменить сценарий теста на что-то вроде этого, чтобы вы исправили часть схемы проверка:

let schema = {
    "type": "array",
    "items": {
        "type": "object",
        "required": [
            "payments"
        ],
        "properties": {
            "payments": {
                "type": "array",
                "items": {
                    "type": "object",
                    "required": [
                        "amount"
                    ],
                    "properties": {
                        "amount": {
                            "type": "number",
                        }
                    }
                }
            }
        }
    }
}

pm.test("Check Schema", () => {
    pm.response.to.have.jsonSchema(schema)
}) 

Блок try/catch может быть добавлен к этому, если вам тоже нужно.

...