Возврат результатов асинхронного массива в Javascript ES6 - PullRequest
0 голосов
/ 13 декабря 2018

Я новичок в Javascript и изо всех сил пытаюсь понять, как или, по крайней мере, как лучше вернуть значения массива в другой скрипт, чтобы подтвердить их значения.

В контексте я хочу использовать Puppeteer для получения некоторых строковых значений из атрибутов WebElement, а затем использовать библиотеку ожидания Chai для подтверждения правильных значений (или иным образом).

Код, который я имею до сих пор:

//app.spec.js
const clothingChoice = await frame.$eval('#option-clothing-5787', e => e.getAttribute('value'));
const groceryChoice = await frame.$eval('#option-clothing-4556', e => e.getAttribute('value'));
const wineChoice = await frame.$eval('#option-clothing-4433', e => e.getAttribute('value'));
const voucherChoice = await frame.$eval('#option-clothing-3454', e => e.getAttribute('value'));

function testFunction() {
  return new Promise(function(resolve, reject) {
    resolve([clothingChoice, groceryChoice, wineChoice, voucherChoice]);
  });
}

async function getChosenItemValues() {
  const [clothingChoice, groceryChoice, wineChoice, voucherChoice] = await testFunction();

  console.log(clothingChoice, groceryChoice, wineChoice, voucherChoice);

}

getChosenItemValues();

module.exports = getChosenItemValues;

};

Мне просто нужно понять, как импортировать значения, которые в данный момент просто распечатываются как:

1|clothing|option 1|grocery|option 1|wine|option 1|voucher|option

... в другой файл test.js в котором я хочу использовать чай, чтобы утверждать их присутствие следующим образом:

const [clothingEmailGrantedValue,emailRewardsNewsletterGrantedValue, emailGroceryOffersGrantedValue,telephoneRewardsDeniedValue ] = await app.spec.js(page, frame);
expect(clothingChoice).to.equal('1|clothing|option');

1 Ответ

0 голосов
/ 13 декабря 2018

Один из способов сделать это - напрямую экспортировать вашу функцию и деструктурировать ваш массив внутри вашего test.js файла.

async function getChosenItemValues() {
  return await testFunction();
}

module.exports = getChosenItemValues()

внутри вашего файла test.js

const [clothingChoice, groceryChoice, wineChoice, voucherChoic] = require('./app.spec.js');

console.log(clothingChoice, groceryChoice, wineChoice, voucherChoice);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...