4

我想测试一个方法的错误处理,该方法与 setTimeout 一起安排工作。该错误将在预定部分抛出,即:

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

如何测试是否引发了错误以及是否有正确的消息?

4

1 回答 1

8

您需要在 中捕获该函数setTimeout并使用expect(function(){fn();}).toThrow(e);. 因此,您可以窥探setTimeout以获取该功能:

spyOn(window, 'setTimeout');
sutWithSetTimeout();
var fn = window.setTimeout.mostRecentCall.args[0];
expect(fn).toThrow('pang');
于 2012-08-29T15:18:43.070 回答