Correctly remove spies of window.onerror on IE
This commit is contained in:
34
spec/html/SpyRegistryHtmlSpec.js
Normal file
34
spec/html/SpyRegistryHtmlSpec.js
Normal 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');
|
||||
}
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user