【问题标题】:Can Cypress Recognize Default Export Functions?赛普拉斯可以识别默认导出函数吗?
【发布时间】:2021-04-26 12:08:06
【问题描述】:

赛普拉斯似乎无法正确识别默认导出的函数。示例:

export default function (array) {
  const randomValue = array[Math.floor(Math.random() * array.length)];
  return randomValue;
}

import randomValueFromArray from '../../../../../support/index';

randomValueFromArray([1, 2]).then((value) => {
    cy.log('VALUE', value);
  });

赛普拉斯跑步者错误: (0 , _index.default) is not a function

【问题讨论】:

  • 无法复制,对我来说可以正常工作。但是randomValueFromArray([1, 2]).then() 无效,因为您的函数没有返回承诺。

标签: javascript ecmascript-6 cypress es6-modules


【解决方案1】:

在 cypress 中,您可以将此函数作为自定义命令添加到 support/commands.js 文件中:

Cypress.Commands.add("randomValueFromArray", (array) => { return array[Math.floor(Math.random() * array.length)]; })

& 使用规范确保在support/index.js 中添加import './commands'

   cy.randomValueFromArray([1,2,5,6,3,8,9,2,5,7]).then((value) => {
        cy.log('VALUE', value);
      })

【讨论】:

  • 我们将它作为命令使用,但现在还需要在浏览器外部运行的文件中使用它,因此cy 命令不可用。
  • @anutter 检查此stackoverflow.com/a/60714505/5324105 。它可能会有所帮助。
【解决方案2】:

能够让它以这种方式工作:

function randomValueFromArray(array) {
  const randomValue = array[Math.floor(Math.random() * array.length)];
  return randomValue;
}


module.exports = {
  randomValueFromArray,
};

然后导入并调用它:

import { randomValueFromArray } from '../../../../../support/index';

let warehouse;

  warehouse = randomValueFromArray([1, 2]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2019-09-26
    • 1970-01-01
    相关资源
    最近更新 更多