将赛普拉斯文件转换为更合适的格式以进行导出

时间:2019-05-14 13:10:42

标签: javascript node.js import export cypress

我正在努力将最佳实践付诸实践,将用于赛普拉斯测试的现有文件转换成更适合导出和导入的格式。

当前:

support-file.js

export const1 = () => cy.get('#someId1');
export const2 = () => cy.get('#someId2');
export const3 = () => cy.get('#someId3');

export function myFunct1() {
    // Do something
}

export function myFunct2() {
    // Do something
}

export function myFunct3() {
    // Do something
}

file-where-used.js

import {
  const1, const2, const3,
  myFunct1, myFunct2, myFunct3
}

// usage of the consts/functs below

我已经尝试过将它们格式化为不必分别导入的格式,但是我无法弄清楚……我想,也许将所有内容包装为一个类并导出,确实可以但仅当使用require而不是import时...而且我还发现导出const变量很困难...

尝试

export const1 = () => cy.get('#someId1');
export const2 = () => cy.get('#someId2');
export const3 = () => cy.get('#someId3');

class myClass {
    myFunct1() {
        // Do something
    }

    myFunct2() {
        // Do something
    }

    myFunct3() {
        // Do something
    }
}
module.exports = new myClass();

1 个答案:

答案 0 :(得分:1)

您可以分几步解决问题。

自定义命令/功能

首先,您要创建像这样的自定义命令:

export function() {
    // Do something
}

通过将该函数放入文件cypress/support/commands.js中,您不必将其导入到集成文件中,但是您必须重写,就像这样:

Cypress.Commands.add('myFunct1', function () {
    // Do something
})

您最终在集成文件中得到的是:

cy.myFunct1()

全局变量

您正在分配这样的全局变量:

export const1 = () => cy.get('#someId1');
export const2 = () => cy.get('#someId2');
export const3 = () => cy.get('#someId3');

首先将它们重写为常量:

const const1 = () => cy.get('#someId1');
const const2 = () => cy.get('#someId2');
const const3 = () => cy.get('#someId3');

总是需要将它们一个一个地导入,但是只要它们在一个文件中,就可以将它们合并。您可以这样将它们导入到测试文件中:

import {const1, const2, const3} from '<FILE_DIRECTORY>'

现在它们可以在整个测试文件中使用。