📌  相关文章
📜  “'Cypress & EventEmitter' 类型上不存在属性 'mocha'.” - 打字稿(1)

📅  最后修改于: 2023-12-03 14:48:44.103000             🧑  作者: Mango

错误:“'Cypress & EventEmitter' 类型上不存在属性 'mocha'。”

介绍

这个错误通常在使用Cypress进行自动化测试时出现,因为Cypress使用Mocha作为默认测试框架。这个错误表明你正在尝试在Cypress环境中使用Mocha API,但是这些API并不存在于Cypress对象上。

解决方案
  1. 改用Cypress的API:Cypress提供了自己的API来进行测试,用法与Mocha大同小异。详见 Cypress官方文档

  2. 尝试扩展Cypress:如果你确实需要使用Mocha API,可以尝试扩展Cypress对象,使其包含Mocha API。这可以通过在“支持文件”中编写JavaScript模块来完成,详见 Cypress官方文档

// cypress/support/mocha.js
import {Cypress} from 'cypress'

// 将Mocha API添加到Cypress对象上
Cypress.mocha = require('mocha')
// cypress/plugins/index.js
module.exports = (on, config) => {
  on('before:browser:launch', (browser, launchOptions) => {
    // 启用nodeIntegration,以便在浏览器中使用require
    const newArgs = [...launchOptions.args, '--node-integration']
    launchOptions.args = newArgs
    return launchOptions
  })
}

这将在每次运行Cypress测试时,将Mocha API添加到Cypress对象上,并在浏览器中启用nodeIntegration以便使用require。然而,请注意,这并不是一个标准做法,并且可能会导致其他问题。

总结

这个错误告诉我们要谨慎使用第三方库,特别是在编写自动化测试时。如果使用的是Cypress,最好使用其提供的API。如果非得使用第三方库的API,可以尝试扩展Cypress对象,但这并不是一个保险的方案,需要谨慎评估。