我正在尝试从另一个文件访问 const 变量。结构如下:
我有 welcome.spec.js ,在这里我声明了一个 const 变量,如下所示并将其导出。我正在使用此规范的值。
context('Welcome', () => {
// Generating a random userCount value for further verifications.
const userCount = (Math.round(Math.random()*10))
module.exports = {userCount}
beforeEach(() => {
cy.visit('/')
cy.clearCookies()
})
我还有 payment.spec.js ,我需要使用完全相同的值。
context('Payment', () => {
const {userCount} = require ('../welcome/welcome.spec')
beforeEach(() => {
cy.visit('/')
cy.clearCookies()
})
在某些情况下,我需要根据随机生成的值做出一些断言。这个结构有效,但不符合我的预期。结果如下:
在付款下,如您所见,它也从欢迎导入我的所有测试。我有重复的测试 + 这 2 个欢迎测试之间随机生成的值不同。
我尝试过的:
将 const 声明移出
上下文
。尝试创建自定义命令 (../support/commands),但收到诸如 userCount 不是函数 或 userCount 未定义 之类的错误。另外,我也尝试在 Cypress 的支持文件夹下使用 index.js。
如何从另一个文件访问该 const 变量而不重复我的测试并使用相同的值?我应该如何进行?难道是我报关导出的方式不对?
注意:根据值==> const userCount,用户在欢迎屏幕上输入此值,并在付款上根据该值显示输入字段。 (3 个用户 ==> 3 个用户信息字段等)
提前致谢! 问候。
最佳答案
将 const 导出到上下文之外。这是您在导入文件时在其他文件中访问它的方式 (ES6)。
welcome.spec.js
const userCount = (Math.round(Math.random()*10))
context('Welcome', () => {
// Generating a random userCount value for further verifications.
module.exports = {userCount}
beforeEach(() => {
cy.visit('/')
cy.clearCookies()
})
<小时/>
付款.spec.js
import {userCount} from "../welcome/welcome.spec";
关于javascript - 从另一个文件(Cypress、JS)访问变量会导致重复测试运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58958042/