我正在编写一个强制异常的测试,然后在 catch 块中调用相同的函数。
在我的测试中,我需要监视 localStorage.setItem 一次,这是我模拟异常的地方。当调用者再次被调用时,我需要删除间谍或以某种方式防止 catch 块再次被击中。
it('handles quota_exceeded exceptions', function() {
spyOn(localStorage, 'setItem').andCallFake(function() {
throw new Error("QUOTA_EXCEEDED_ERR", "QUOTA_EXCEEDED_ERR: DOM Exception 22");
});
spyOn(Obj, 'add').andCallThrough();
spyOn(Obj, 'clean');
expect(function() {
Obj.add('foo', 'bar');
}).not.toThrow();
expect(Garage.add.callCount).toBe(2);
});
上面的测试代码会产生一个无限循环,因为 localStorage.setItem 每次都会引发异常。
任何想法或替代测试模式将不胜感激。
谢谢