From ea4c44904d9b2ed5ad9907ba817d27dbcded045b Mon Sep 17 00:00:00 2001 From: Gregg Van Hove Date: Mon, 26 Oct 2015 17:41:30 -0700 Subject: [PATCH] IE 8 doesn't support `defineProperty` on non-DOM nodes, skip that kindof thing --- spec/core/SpyRegistrySpec.js | 3 +++ src/core/SpyRegistry.js | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) 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'); }