我想测试一个方法的错误处理,该方法使用setTimeout进行调度。错误将在计划部分中抛出,即:
function sutWithSetTimeout() {
setTimeout(function () { throw new Error("pang"); }, 1);
}
如何测试是否抛出了错误并且它有正确的消息?
答案 0 :(得分:7)
您需要在setTimeout
中捕获该功能,并使用expect(function(){fn();}).toThrow(e);
进行调用。所以你可以窥探setTimeout
来获得这个功能:
spyOn(window, 'setTimeout');
sutWithSetTimeout();
var fn = window.setTimeout.mostRecentCall.args[0];
expect(fn).toThrow('pang');