2016-08-31 2 views
1

모카 테스트가 있습니다. 가능한 한 단순화 할 것입니다. 모카 테스트에서 오류를 어떻게 처리해야합니까? 예를 들어 getName에 오류가있는 경우 어떻게해야합니까? 어떻게 오류를 던질 수 있습니까? 또는 done(error)을 사용해야합니까? donenull 이외의 인수로 호출하면모카 단위 테스트에서 오류 처리

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

항상'다 (ERR)'당신이있는 경우 비동기 코드를 사용합니다. Asynchrone을 던지면 작동하지 않습니다. –

답변

2

, 테스트가 실패하고 같은보고. 다른 테스트는 여전히 실행됩니다.

그것은 당신이뿐만 아니라 오류에 대한 성공을 테스트 할 수 있습니다 :

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'); 
}); 
관련 문제