当 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,那么我的生产代码也将被伊斯坦布尔检测,这是我不希望发生的。

谁能告诉我这里是否遗漏了一些明显的东西?我做错了什么吗?

yk8278 回答:当 NODE_ENV=test 时,如何使用带有伊斯坦布尔代码覆盖率的 cypress 正确测试 VueJS

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 在测试浏览器中。

本文链接:https://www.f2er.com/227520.html

大家都在问