2016-08-31 53 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'); 
});