2012-08-29 64 views
4

我想測試一個方法的錯誤處理,該方法使用setTimeout進行工作。錯誤將發生在預定部分,即:Jasmine:測試一個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'); 
相關問題