Получение определенного значения из ответа - PullRequest
1 голос
/ 05 апреля 2019

Я пытаюсь установить переменную среды почтальона на основе определенного значения в ответе.

Я не уверен в коде, который можно использовать для получения значения.

Я знаю, что мне нужночтобы установить ответ как переменную, что я сделал следующим образом:

var response = JSON.parse(responseBody);

И я знаю, что могу использовать следующее для установки моей переменной среды:

postman.setEnvironmentVariable("category_ref",myVariableName);

Ниже приведен фрагментиз моего ответа:

{
    "id": 45,
    "name": "Accommodation",
    "description": ""
},
{
    "id": 46,
    "name": "Accommodation (Engineering)",
    "description": ""
},

Я хочу получить значение «id» на основе значения «name», которое я уже знаю.

Так, например, я хочу, чтобы мой код дал мне идентификатор, где "name" = "Проживание"

Редактировать:

Изменено сделано наисходный вопрос после ответов ниже.

Код моих тестов теперь выглядит следующим образом:

//Ensure the API Test Category is present
var response = JSON.parse(responseBody);
tests["my test"] = responseBody.has("Accommodation");

//pass in id into variable for delete step
var requiredId = pm.response.json().find(function(element){
    if (element.name == "Accommodation"){
        return element.id;
    }
});

stringId = JSON.stringify(requiredId);

pm.environment.set("category_ref",stringId);

console.log("my string "+stringId);

И мой вывод на консоль выглядит следующим образом, что также является значением, которое отправляется в category_refпеременная окружения:

my string {"id":45,"name":"Accommodation","description":""}

Остается проблема: я не хочу возвращать все элементы, как это делается выше, я хочу вернуть только «45», что является значением id, где name = Accommodation.

1 Ответ

1 голос
/ 05 апреля 2019

Тесты в Почтальоне, кроме JavaScript, поэтому вы можете использовать Array.find() следующим образом,

Тело ответа:

[
    {
        "id": 45,
        "name": "Accommodation",
        "description": null
    },
    {
        "id": 46,
        "name": "Accommodation (Engineering)",
        "description": null
    }
]

Окно теста:

var matchedItem = pm.response.json().find(function(element) {
    if (element.name == "Accommodation") {
        return element;
    }
});

console.log(matchedItem.id);
...