diff --git a/spec/core/SpyRegistrySpec.js b/spec/core/SpyRegistrySpec.js index 52aef6a44..faa79071e 100644 --- a/spec/core/SpyRegistrySpec.js +++ b/spec/core/SpyRegistrySpec.js @@ -38,6 +38,9 @@ describe("SpyRegistry", function() { }); it("checks if it can be spied upon", function() { + // IE 8 doesn't support `definePropery` on non-DOM nodes + if (jasmine.getEnv().ieVersion < 9) { return; } + var scope = {}; function myFunc() { diff --git a/src/core/SpyRegistry.js b/src/core/SpyRegistry.js index 4c9a90dae..65769e954 100644 --- a/src/core/SpyRegistry.js +++ b/src/core/SpyRegistry.js @@ -22,7 +22,13 @@ getJasmineRequireObj().SpyRegistry = function(j$) { throw new Error(methodName + ' has already been spied upon'); } - var descriptor = Object.getOwnPropertyDescriptor(obj, methodName); + var descriptor = undefined; + try { + descriptor = Object.getOwnPropertyDescriptor(obj, methodName); + } catch(e) { + // IE 8 doesn't support `definePropery` on non-DOM nodes + } + if (descriptor && !(descriptor.writable || descriptor.set)) { throw new Error(methodName + ' is not declared writable or has no setter'); }