赛普拉斯电子产品-使用FS

时间:2020-07-27 08:58:42

标签: node.js vue.js electron cypress fs

我正在使用Cypress来测试我的Electron应用程序。 由于赛普拉斯使用浏览器模式,因此不支持FS。 所以我得到这个错误:

Error in mounted hook: "TypeError: fs.existsSync is not a function"

我在文档中发现了这一点

https://docs.cypress.io/api/commands/task.html#Event

所以我在测试中添加了它:

it('Sample test', () => {
  cy.task('readSettingsJson', settingsFolder).then((content) => { 
    // This can print the JSON file contents correctly
    console.log('content = ' + content) 
  })
})

在我的plugins/index.js上:

 on('task', {
    readSettingsJson(foldername) {
      if (!fs.existsSync(foldername)) {
        fs.mkdirSync(foldername, { recursive: true })
        // some command to copy the file
      } else {
        // This is what I am testing at this moment
        return fs.readFileSync(path.join(filename, '/settings.json'), 'utf8')
      }

      return null
    }
 })

但是,它似乎不起作用。我仍然收到错误:

Error in mounted hook: "TypeError: fs.existsSync is not a function"

尽管测试可以正确打印json文件,但我的应用仍然无法加载JSON文件。

我错过了什么吗?请帮忙!

1 个答案:

答案 0 :(得分:0)

赛普拉斯对Electron应用程序的支持在早期的alpha版本中: https://www.cypress.io/blog/2019/09/26/testing-electron-js-applications-using-cypress-alpha-release/

或者,尝试使用Spectron,这是Electron团队当前推荐的测试框架: https://www.electronjs.org/spectron