Correctly remove spies of window.onerror on IE

This commit is contained in:
Steve Gravrock
2017-12-18 16:34:37 -08:00
parent d3a3cf1ff3
commit b6cc34d9e9
4 changed files with 56 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
describe('Spy Registry browser-specific behavior', function() {
it('can spy on and unspy window.onerror', function() {
requireWriteableOnerror();
var spies = [],
spyRegistry = new jasmineUnderTest.SpyRegistry({
currentSpies: function() { return spies; },
global: window
}),
originalHandler = window.onerror;
try {
spyRegistry.spyOn(window, 'onerror');
spyRegistry.clearSpies();
expect(window.onerror).toBe(originalHandler);
} finally {
window.onerror = originalHandler;
}
});
function requireWriteableOnerror() {
var descriptor;
try {
descriptor = Object.getOwnPropertyDescriptor(window, 'onerror');
} catch(e) {
// IE 8 doesn't support `definePropery` on non-DOM nodes
}
if (descriptor && !(descriptor.writable || descriptor.set)) {
pending('Browser declares window.onerror to be readonly');
}
}
});