2016-08-31 51 views
1

我有摩卡测试。我会尽可能简化。 我想知道我应该如何处理摩卡测试中的错误。例如,如果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

总是用'做(ERR)'如果你有异步代码。抛出异步字符将不起作用。 –

回答

2

如果done被称为比null以外的参数,测试将失败,并报告为此类。其他测试仍将执行。

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

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