«Почтальон -Как проверить, является ли тип любой клавиши« строкой »или« нулем »одновременно» - PullRequest
0 голосов
/ 08 ноября 2019

В данном фрагменте ответа тип "parentName" иногда равен null или иногда string. Как проверить / написать тестовый сценарий для проверки typeof string, а также null одновременно.

tests["Verify parentName is string"] = typeof(jsonData.parentName) === "string" || null;

tests["Verify parentName is string"] = typeof(jsonData.parentName) === "string" || "null";
"demo": [
            {
                "id": 68214,
                "specializationId": 286,
                "name": "Radiology",
                "parentName": null,
                "primary": true
            }
        ],

Как обрабатывать такого рода условия в почтальоне (null & string).

1 Ответ

0 голосов
/ 08 ноября 2019

Я бы не рекомендовал , если еще в тестовом случае Почтальона. Почтальон имеет встроенную функцию для проверки схемы, вы можете использовать ее и достичь того же результата без каких-либо других действий.

Во-первых, я рассматриваю в качестве ответа следующее:

{
    "demo": [{
        "id": 68214,
        "specializationId": 286,
        "name": "Radiology",
        "parentName": null,
        "primary": true
    }]
}

Тест почтальона должен быть следующим:

var Ajv = require('ajv'),
ajv = new Ajv({logger: console}),
schema = {
    "properties": {
        "parentName": {
            "type":["string", "null"]
        }
    }
};

pm.test('Verify parentName is string', function() {    
    var resParentName =  pm.response.json().demo[0].parentName;
    pm.expect(ajv.validate(schema, {parentName: resParentName})).to.be.true;
});

Редактировать: Проверить полностьюответ, а не только первый пункт. Также проверьте, присутствует ли parentName в ответе или нет.

var Ajv = require('ajv'),
ajv = new Ajv({logger: console}),
schema = {
    "properties": {
        "demo":{
            "type": "array",
            "items": {
                 "properties": {
                     "id":{ "type": "integer" },
                     "specializationId":{ "type": "integer" },
                     "name":{"type": "string"},
                     "parentName":{
                         "type":["string", "null"]
                     },
                     "primary":{"type": "boolean"}
                 },
                 "required": [ "parentName"]
            }
        }
    }
};

pm.test('Validate response', function() {
    pm.expect(ajv.validate(schema, pm.response.json())).to.be.true;
});
...