i
- это имя, и любой объект, к которому обращается по имени, автоматически является LValue, хотя ваш параметр помечен как ссылка rvalue. Вы можете применить i
к rvalue с помощью std::move
или std::forward
void f(int&& i) {
auto lambda = [](int&& j) { (void)j; };
lambda(std::move(i));
}
int main() {
f(5);
}
Вы можете захватить все значения id
в массиве, используя Lodash , который является внешним модулем, который вы можете использовать в приложении Postman.
Сохранение array
в качестве переменной после этого - то же самое, что вы уже сделали, но я добавил JSON.stringify()
вокруг значения массива, или он сохранит это как строку.
let giftsArray = []
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id)
})
pm.environment.set('giftsToCollect', JSON.stringify(giftsArray))
После этого вы сможете ссылаться на переменную среды следующим образом:
gift_ids: {{giftsToCollect}}
Я смоделировал данные запроса локально, просто чтобы показать вам этот захват значения из данных.
Работающий хак - добавить pm.sendRequest
с данными из второго теста на вкладку «Тесты» 1-го теста. В этом случае 2-й тест не выполняется в целом, но подарки собираются. Это не лучшее решение, но оно работает.
let jsonData = pm.response.json();
let giftsArray = [];
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id);
});
pm.sendRequest({
url: 'http://url/api/gifts/collect',
method: 'POST',
header: {
'Content-type': 'application/json',
'Host': 'url',
'accept-encoding': 'gzip, deflate',
'Connection': 'keep-alive'
},
body: {
mode: 'raw',
raw: JSON.stringify({'api_token': '48696295110ba1e8f9937820dc9b6626', 'user_id': '100650741100901', 'gift_ids': giftsArray, 'version': '6.0.0'})
}
}, function (err, res) {
console.log(res);
});