如何跳过 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 = {};
这是我的 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 = {};