2012-08-29 4 views
4

setTimeout과 함께 작동하는 메서드의 오류 처리를 테스트하고 싶습니다. 오류가 예약 된 부분에 표시됩니다 (예 :재스민 : setTimeout 함수가 오류를 던졌습니다.

).
function sutWithSetTimeout() { 
    setTimeout(function() { throw new Error("pang"); }, 1); 
} 

오류가 발생했는지, 올바른 메시지가 있는지 테스트하려면 어떻게해야합니까?

답변

7

setTimeout에있는 기능을 알아 내고 expect(function(){fn();}).toThrow(e);을 사용하여 호출해야합니다. 그래서 당신은 setTimeout에 스파이 기능을 얻을 수 있습니다 :

spyOn(window, 'setTimeout'); 
sutWithSetTimeout(); 
var fn = window.setTimeout.mostRecentCall.args[0]; 
expect(fn).toThrow('pang'); 
관련 문제