为什么我的typeof检查未定义我的Mocha测试失败?

时间:2016-05-17 15:22:44

标签: javascript testing mocha chai karma-mocha

此代码未通过测试

功能

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');
});

enter image description here

但是,如果我将"undefined"检查为字符串,则会通过测试。

function getTheme() {
    if (typeof chartTheme === 'undefined') {
        chartTheme = 'dark';
    }
    return chartTheme;
}

1 个答案:

答案 0 :(得分:2)

首先请看Which equals operator (== vs ===) should be used in JavaScript comparisons?

您正在使用minSdkVersion的严格相等运算符。严格的相等性检查类型和值是否相等。

undefined返回字符串

因此,

typeof

返回typeof chartTheme === 'undefined'

换句话说,

true

但是,

undefined !== 'undefined'