Jasmine:测试setTimeout函数会抛出一个错误

Jasmine: test a setTimeout function throws an error

本文关键字:错误 一个 测试 setTimeout 函数 Jasmine      更新时间:2023-09-26

我想测试一个方法的错误处理,该方法计划与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');
相关文章: