返回Javascript ES6中异步数组的结果

时间:2018-12-13 09:35:17

标签: javascript node.js mocha

我是Java的新手,正在努力了解如何或至少如何最好地将数组值返回到另一个脚本以再次声明其值。

上下文是我想使用Puppeteer从WebElement属性中获取一些字符串值,然后使用Chai Expect库来声明正确的值(否则)。

到目前为止,我的代码是:

//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,我要在其中使用chai声明它们的存在,如下所示:

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

1 个答案:

答案 0 :(得分:0)

一种方法是直接导出函数并在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);