如何跳过 jest 编译错误和 运行 测试?

How to skip jest compile error and run test?

这是我的 vue.js 代码:

export default {
  name: 'App',
  components: {
  },
  created() {
    let t = typeof t === 'undefined' ? {} : t; // ISSUE LINE
  }
}

ISSUE LINE 可以运行 在浏览器中成功无任何错误并通过 vue-cli 编译过程。但是,当我试图运行这个组件开玩笑地测试时,它可能会报告编译错误:

ReferenceError: Cannot access 't' before initialization

那么,如果应用程序可以在浏览器中 运行,为什么它不能开玩笑地 运行?我可以跳过这个编译错误吗?

ReferenceError 不是编译而是运行时错误。 let t = typeof t === 'undefined' ? {} : t 是无效的 ES6 代码。 let 是 block-scoped 并且在分配之前处于暂时死区,因此在分配期间引用变量是错误的。

这在 Jest 中不起作用,因为 Node.js 完全支持 ES6 并且不需要转换为 ES5,而在浏览器构建中它被转换为:

var t = typeof t === 'undefined' ? {} : t;

var 声明被提升,所以 t 变量在赋值时被定义,所以它是一样的:

var t; // t === undefined
// ...everything that happens in this scope...
t = typeof t === 'undefined' ? {} : t; // always results in t = {}

条件没有用,因为它永远不会达到else,正确的写法是:

let t = {};