@@ -193,4 +193,34 @@ describe('GlobalErrors', function() {
|
|||||||
'foo'
|
'foo'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('reports unhandledRejection in browser', function() {
|
||||||
|
var fakeGlobal = {
|
||||||
|
addEventListener: jasmine.createSpy('addEventListener'),
|
||||||
|
removeEventListener: jasmine.createSpy('removeEventListener'),
|
||||||
|
onerror: jasmine.createSpy('onerror')
|
||||||
|
},
|
||||||
|
handler = jasmine.createSpy('errorHandler'),
|
||||||
|
errors = new jasmineUnderTest.GlobalErrors(fakeGlobal);
|
||||||
|
|
||||||
|
errors.install();
|
||||||
|
expect(fakeGlobal.addEventListener).toHaveBeenCalledWith(
|
||||||
|
'unhandledrejection',
|
||||||
|
jasmine.any(Function)
|
||||||
|
);
|
||||||
|
|
||||||
|
errors.pushListener(handler);
|
||||||
|
|
||||||
|
var addedListener = fakeGlobal.addEventListener.calls.argsFor(0)[1];
|
||||||
|
addedListener({ reason: new Error('bar') });
|
||||||
|
|
||||||
|
expect(handler).toHaveBeenCalledWith('Unhandled Rejection: Error: bar');
|
||||||
|
|
||||||
|
errors.uninstall();
|
||||||
|
|
||||||
|
expect(fakeGlobal.removeEventListener).toHaveBeenCalledWith(
|
||||||
|
'unhandledrejection',
|
||||||
|
addedListener
|
||||||
|
);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -63,8 +63,25 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
|
|||||||
var originalHandler = global.onerror;
|
var originalHandler = global.onerror;
|
||||||
global.onerror = onerror;
|
global.onerror = onerror;
|
||||||
|
|
||||||
|
var browserRejectionHandler = function browserRejectionHandler(event) {
|
||||||
|
onerror('Unhandled Rejection: ' + event.reason);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (global.addEventListener) {
|
||||||
|
global.addEventListener(
|
||||||
|
'unhandledrejection',
|
||||||
|
browserRejectionHandler
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
this.uninstall = function uninstall() {
|
this.uninstall = function uninstall() {
|
||||||
global.onerror = originalHandler;
|
global.onerror = originalHandler;
|
||||||
|
if (global.removeEventListener) {
|
||||||
|
global.removeEventListener(
|
||||||
|
'unhandledrejection',
|
||||||
|
browserRejectionHandler
|
||||||
|
);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user