mocha单元测试中的错误处理

时间:2016-08-31 07:26:05

标签: node.js unit-testing mocha

我有摩卡测试。我会尽可能地简化。 我想知道如何处理摩卡测试中的错误。例如,如果getName中存在错误,我该怎么办?我怎么能抛出错误?或者我应该使用done(error)作为;

 it('trial', function(done) {
    getName(function (name, err) {
        if(err){
            done(err); //what should I do here? 
        }else{
            console.log(name);
        }
    });
});

1 个答案:

答案 0 :(得分:3)

如果使用done以外的参数调用undefined,则测试将失败并报告为此类。其他测试仍将执行。

它允许您测试成功,但也测试错误:

it('succeed', (done) => {
    myFunc('success', (err, res) => {
        if(err) {
            done(err);
        } else if(res !== 'expected') {
            done('Wrong result ' + res);
        } else {
            done();
        }
    });
});

it('fail with error 404', (done) => {
    myFunc('fail', (err, res) => {
        if(err) {
            if(err === 404) {
                done();
            } else {
                done('Error was expected to be 404, got ' + err);
            }
        } else {
            done('Was expected to fail, got result ' + res + ' and no error');
        }
    });
});

it('succeed', (done) => {
    try {
        var res = myFuncSync('succeed');
    } catch(err) {
        done(err);
    }
    done();
});

it('fail with error 404', (done) => {
    try {
        var res = myFuncSync('succeed');
    } catch(err) {
        if(err === 404) {
            done();
        } else {
            done('Error was expected to be 404, got ' + err);
        }
    }
    done('Was expected to fail, got result ' + res + ' and no error');
});