我想测试一个方法的错误处理,该方法使用 setTimeout 进行调度。该错误将在预定部分抛出,即:
function sutWithSetTimeout() {
setTimeout(function () { throw new Error("pang"); }, 1);
}
我如何测试是否抛出错误以及它是否包含正确的消息?
最佳答案
您需要在 setTimeout
中捕获函数并使用 expect(function(){fn();}).toThrow(e);
调用它们。所以你可以监视 setTimeout
来获取函数:
spyOn(window, 'setTimeout');
sutWithSetTimeout();
var fn = window.setTimeout.mostRecentCall.args[0];
expect(fn).toThrow('pang');
关于javascript - Jasmine:测试 setTimeout 函数抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12176499/