Jasmine: test a setTimeout function throws an error
问题 I would like to test the error handling of a method, which schedules work with setTimeout. The error will be thrown in the scheduled part, i.e.: function sutWithSetTimeout() { setTimeout(function () { throw new Error("pang"); }, 1); } How do I test that an error is thrown and that it has the correct message? 回答1: You need to catch the function in the setTimeout and call them using expect(function(){fn();}).toThrow(e); . So you can spy on setTimeout to get the function: spyOn(window,