简体   繁体   English

mocha单元测试中的错误处理

[英]Error handling in mocha unit tests

I have mocha tests. 我有摩卡测试。 I will simplify as possible as I can. 我会尽可能地简化。 I wonder how should I handle the errors in mocha tests. 我想知道如何处理摩卡测试中的错误。 For example, if there is an error in getName, what should I do? 例如,如果getName中存在错误,我该怎么办? How can I throw an error? 我怎么能抛出错误? Or should I use done(error) as; 或者我应该使用done(error)作为;

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

If done is called with a argument other than undefined , the test will fail and be reported as such. 如果使用非undefined之外的参数调用done ,则测试将失败并报告为此类。 Other test will still be executed. 其他测试仍将执行。

It allow you to test for success, but also for error: 它允许您测试成功,但也测试错误:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM