Импорт внешних библиотек в Почтальон - PullRequest
0 голосов
/ 18 февраля 2019

Моя потребность: Я хочу построить путь, содержащий фильтры, в моем ответе JSON.

//Simple path - OK
response.Node1.Node2.Node3.Node4

//Path with list - OK
response.Node1.Node2.Node3[1].Node4

//Path with condition (filter) - NOK
response.Node1.Node2[?(@.Node3 == 'value')].Node3bis

Почтальон не понимает [? (@. Node3 == 'значение')] Синтаксис jsonPath изначально не поддерживается.

Поэтому я пытаюсь импортировать js-библиотеку jsonPath в Postman и обнаружил два:


Исследования

  • Я уже прочитал этот пост ,и ни один из ответов не отвечает моим потребностям.

  • Код JS почтальона ограничен песочницей .

  • Пределы почтальонабиблиотеки для этого списка .

  • Существует трюк (см. СОВЕТ № 5) для добавления кода js в качестве глобальной переменной и вызова егов запросах.Однако это не работает для проекта jsonPath, так как это не просто функция, а целый проект.Я пробовал много разных способов, но все еще не смог вызвать функции jsonPath из моего теста Почтальона.

  • Я также прочитал связанную с проблему Почтальона .

  • Из сообщества GitHub этот вопрос был закрыт в пользу этого .Который был закрыт в пользу этого .Который открывается без четкого ответа ( только маленькие хитрости, упомянутые выше ) с июня 2015 года.


Неизвестные домены

Даже если я читаю их глобальное использование, я не знаю ничего технического о NodeJs / NPM / Newman.

Но я читал, что почтальон поддерживает NodeJs, позволяет генерировать фрагмент кода NodeJs, и я увидел, что библиотека jsonPath можетбыть импортированным с использованием NodeJ.

Возможно, что-то можно сделать оттуда, но у меня нет опыта, чтобы это произошло.


Вопрос:

Кто-нибудь знает, как заставить его работать вообще?

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

Любая коллекция почтальонов, делающая это, приветствуется:).

1 Ответ

0 голосов
/ 20 февраля 2019

Что касается первоначального вопроса, импорт внешнего js-кода в настоящее время не поддерживается (за исключением трюка с глобальными переменными, описанного выше), но сейчас он находится в стадии разработки командой почтальонов.Вы можете получить его до официальной доставки, если используете версию canary .

Что касается моих потребностей, я действительно нашел способ построить путь с условиями, используя cheerio .Примечание: responseBody находится в XML, поэтому в результате я загружаю cheerio.

var $ = cheerio.load(responseBody, {
  ignoreWhitespace: true,
  xmlMode: true
});

//Will show in the console the value of NODE3bis corresponding to a NODE3='value'
console.log("cheerio xpath with condition: " + 
$('NODE1 > NODE2 > NODE3:contains("value")')
    .parent().find('NODE3bis').text());
//Where NODE3 and NODE3bis are sibling. 

//Another way to write it using .has() function, which allows to avoid the use of .parent() afterward:
console.log("cheerio xpath with condition: " + 
$('NODE1 > NODE2').has('NODE3:contains("value")').find('NODE3bis').text());
...