这段代码没有通过测试
函数:
function setTheme(theme) {
chartTheme = theme;
}
function getTheme() {
if (typeof chartTheme === undefined) {
chartTheme = 'dark';
}
return chartTheme;
}
测试:
it('If theme is undefined, expect dark', function() {
ChartFactory.setTheme(undefined);
expect(ChartFactory.getTheme()).to.equal('dark');
});
然而,如果我检查 "undefined"
作为字符串,这确实通过了测试。
function getTheme() {
if (typeof chartTheme === 'undefined') {
chartTheme = 'dark';
}
return chartTheme;
}
最佳答案
首先看Which equals operator (== vs ===) should be used in JavaScript comparisons?
您正在对 undefined
使用 Strict 相等运算符。严格相等检查类型和值是否相等。
typeof
返回 string。
因此,
typeof chartTheme === 'undefined'
返回 true
。
换句话说,
undefined !== 'undefined'
但是,
undefined == 'undefined'.
关于javascript - 为什么我的 typeof 检查 undefined 没有通过我的 Mocha 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280302/