首页 > 解决方案 > 在不同文件中使用 Cypress 函数

问题描述

我正在尝试在与主要文件(即测试文件)不同的文件中使用 cypress 函数。我想知道这是否可能。实际上,我是这样做的:这是我的 test.js 文件中的代码;请注意,第一个功能是我想要做的;第二个功能正常工作,我对此没有任何问题。我尝试这样做的原因是我可能需要多次重用同一个函数。

我的树文件夹:

static_copied
    pages
        cities
            Rome
            New York
            Bombay
            Tokyo
            London
            Moscow

test.js文件:

const pathCities = 'static_copied/pages/cities'

it('Retrieve cities from static and divide links', () => {
      

      let cities1 = misc.retrieveCities()
      console.log(cities1)

      // this works
      cy.task('readFolder', pathCities).then(cities => {
        console.log('cities ', cities, typeof cities)    // prints an array of cities, and 'object'
      })
    })
  })

我的misc.help.js文件:

const pathCities = 'static_copied/pages/cities'

module.exports = {
    retrieveCities,
    [...]
}

[...]

function retrieveCities() {
  cy.task('readFolder', pathCities).then(res => {
    console.log('here', res, typeof res)
    return res
  })
}

最后是我的cypress/plugins/index.js文件:

const fs = require('fs')

// opens devTools by default
module.exports = (on, config) => {
  [...]

  // reads a folder, both folder and file names
  on('task', {
    readFolder(path) {
      let foldersAnFiles = fs.readdirSync(path, 'utf8')
      console.log('--->', foldersAnFiles, typeof foldersAnFiles)

      let folders = []

      // if its a file, exclude from result
      foldersAnFiles.filter(function (folder) {
        if (folder.indexOf('.') === -1) {
          folders.push(folder)
        }
      })
      
      return folders
    },
  })
}

发生的情况是,在misc.help.js文件中,打印是正确的:在retrieveCities()函数中,此控制台日志console.log('here', res, typeof res)正确打印​​了一个数组。但是当我在主测试文件中返回它时,console.log(cities1)打印undefined.

有没有办法将我的结果传递给主文件?

标签: javascriptcypress

解决方案


将此添加到您的命令文件中,然后调用cy.retrieveCities()任何测试文件,它将起作用。

Cypress.Commands.add('retrieveCities', () => {
  return cy.task('readFolder', pathCities).then(res => {
    return res
  })
})

推荐阅读