Merge branch 'unhandledrejection' of https://github.com/johnjbarton/jasmine into browser-unhandled-rejections
* Merges #1778 from @johnjbarton * Fixes #1777
This commit is contained in:
@@ -3848,8 +3848,25 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
|
||||
var originalHandler = global.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() {
|
||||
global.onerror = originalHandler;
|
||||
if (global.removeEventListener) {
|
||||
global.removeEventListener(
|
||||
'unhandledrejection',
|
||||
browserRejectionHandler
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -193,4 +193,34 @@ describe('GlobalErrors', function() {
|
||||
'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;
|
||||
global.onerror = onerror;
|
||||
|
||||
var browserRejectionHandler = function browserRejectionHandler(event) {
|
||||
onerror('Unhandled Rejection: ' + event.reason);
|
||||
};
|
||||
|
||||
if (global.addEventListener) {
|
||||
global.addEventListener(
|
||||
'unhandledrejection',
|
||||
browserRejectionHandler
|
||||
);
|
||||
}
|
||||
|
||||
this.uninstall = function uninstall() {
|
||||
global.onerror = originalHandler;
|
||||
if (global.removeEventListener) {
|
||||
global.removeEventListener(
|
||||
'unhandledrejection',
|
||||
browserRejectionHandler
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user