如何解决当 NODE_ENV=test 时,如何使用带有伊斯坦布尔代码覆盖率的 cypress 正确测试 VueJS
我正在使用 cypress 进行 E2E 测试。
我正在使用伊斯坦布尔来计算代码覆盖率
上述组合效果很好,直到我设置 NODE_ENV=test
因为在 tests/e2e/plugins/index.js
中我需要使用
require('@cypress/code-coverage/task')(on,config);
当NODE_ENV=test
时,我认为VUE没有编译源代码,没有使用webpack,因此出现错误
Uncaught ReferenceError: require is not defined
如果我不区分 prod 和 test,那么我的生产代码也将被伊斯坦布尔检测,这是我不希望发生的。
谁能告诉我这里是否遗漏了一些明显的东西?我做错了什么吗?
解决方法
tests/e2e/plugins/index.js
中的行仅有助于收集覆盖率数据,但不会检测代码。
这篇文章有一个关于Conditional instrumentation的部分,
我们不想检测生产代码。
让我们只在 NODE_ENV=test
// babel.config.js
const plugins = []
if (process.env.NODE_ENV === 'test') {
plugins.push([
"babel-plugin-istanbul",{
// specify some options for NYC instrumentation here
// like tell it to instrument both JavaScript and Vue files
extension: ['.js','.vue'],}
])
}
module.exports = {
presets: [
'@vue/app'
],plugins
}
我不知道你为什么收到 Uncaught ReferenceError: require is not defined
。
可能是您错误地在 tests/e2e/support/index.js
中添加了任务发起者,因为 require()
仅在 Node.js 环境中有效。
/plugins/index.js
在 Node.js 中,但 /support/index.js
在测试浏览器中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。