diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 86a7df90..291bf3fc 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -70,6 +70,7 @@ var getJasmineRequireObj = (function (jasmineGlobal) { j$.ReportDispatcher = jRequire.ReportDispatcher(j$); j$.Spec = jRequire.Spec(j$); j$.Spy = jRequire.Spy(j$); + j$.SpyFactory = jRequire.SpyFactory(j$); j$.SpyRegistry = jRequire.SpyRegistry(j$); j$.SpyStrategy = jRequire.SpyStrategy(j$); j$.StringMatching = jRequire.StringMatching(j$); @@ -1081,6 +1082,8 @@ getJasmineRequireObj().Env = function(j$) { reporter.clearReporters(); }; + var spyFactory = new j$.SpyFactory(); + var spyRegistry = new j$.SpyRegistry({ currentSpies: function() { if(!currentRunnable()) { @@ -1106,40 +1109,11 @@ getJasmineRequireObj().Env = function(j$) { }; this.createSpy = function(name, originalFn) { - return j$.Spy(name, originalFn); + return spyFactory.createSpy(name, originalFn); }; this.createSpyObj = function(baseName, methodNames) { - var baseNameIsCollection = j$.isObject_(baseName) || j$.isArray_(baseName); - - if (baseNameIsCollection && j$.util.isUndefined(methodNames)) { - methodNames = baseName; - baseName = 'unknown'; - } - - var obj = {}; - var spiesWereSet = false; - - if (j$.isArray_(methodNames)) { - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = self.createSpy(baseName + '.' + methodNames[i]); - spiesWereSet = true; - } - } else if (j$.isObject_(methodNames)) { - for (var key in methodNames) { - if (methodNames.hasOwnProperty(key)) { - obj[key] = self.createSpy(baseName + '.' + key); - obj[key].and.returnValue(methodNames[key]); - spiesWereSet = true; - } - } - } - - if (!spiesWereSet) { - throw 'createSpyObj requires a non-empty array or object of method names to create spies for'; - } - - return obj; + return spyFactory.createSpyObj(baseName, methodNames); }; var ensureIsFunction = function(fn, caller) { @@ -5093,6 +5067,52 @@ getJasmineRequireObj().Spy = function (j$) { return Spy; }; +getJasmineRequireObj().SpyFactory = function(j$) { + + function SpyFactory() { + var self = this; + + this.createSpy = function(name, originalFn) { + return j$.Spy(name, originalFn); + }; + + this.createSpyObj = function(baseName, methodNames) { + var baseNameIsCollection = j$.isObject_(baseName) || j$.isArray_(baseName); + + if (baseNameIsCollection && j$.util.isUndefined(methodNames)) { + methodNames = baseName; + baseName = 'unknown'; + } + + var obj = {}; + var spiesWereSet = false; + + if (j$.isArray_(methodNames)) { + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = self.createSpy(baseName + '.' + methodNames[i]); + spiesWereSet = true; + } + } else if (j$.isObject_(methodNames)) { + for (var key in methodNames) { + if (methodNames.hasOwnProperty(key)) { + obj[key] = self.createSpy(baseName + '.' + key); + obj[key].and.returnValue(methodNames[key]); + spiesWereSet = true; + } + } + } + + if (!spiesWereSet) { + throw 'createSpyObj requires a non-empty array or object of method names to create spies for'; + } + + return obj; + }; + } + + return SpyFactory; +}; + getJasmineRequireObj().SpyRegistry = function(j$) { var getErrorMsg = j$.formatErrorMsg('', 'spyOn(, )'); diff --git a/src/core/Env.js b/src/core/Env.js index b0a1ae17..57f6868a 100644 --- a/src/core/Env.js +++ b/src/core/Env.js @@ -393,6 +393,8 @@ getJasmineRequireObj().Env = function(j$) { reporter.clearReporters(); }; + var spyFactory = new j$.SpyFactory(); + var spyRegistry = new j$.SpyRegistry({ currentSpies: function() { if(!currentRunnable()) { @@ -418,40 +420,11 @@ getJasmineRequireObj().Env = function(j$) { }; this.createSpy = function(name, originalFn) { - return j$.Spy(name, originalFn); + return spyFactory.createSpy(name, originalFn); }; this.createSpyObj = function(baseName, methodNames) { - var baseNameIsCollection = j$.isObject_(baseName) || j$.isArray_(baseName); - - if (baseNameIsCollection && j$.util.isUndefined(methodNames)) { - methodNames = baseName; - baseName = 'unknown'; - } - - var obj = {}; - var spiesWereSet = false; - - if (j$.isArray_(methodNames)) { - for (var i = 0; i < methodNames.length; i++) { - obj[methodNames[i]] = self.createSpy(baseName + '.' + methodNames[i]); - spiesWereSet = true; - } - } else if (j$.isObject_(methodNames)) { - for (var key in methodNames) { - if (methodNames.hasOwnProperty(key)) { - obj[key] = self.createSpy(baseName + '.' + key); - obj[key].and.returnValue(methodNames[key]); - spiesWereSet = true; - } - } - } - - if (!spiesWereSet) { - throw 'createSpyObj requires a non-empty array or object of method names to create spies for'; - } - - return obj; + return spyFactory.createSpyObj(baseName, methodNames); }; var ensureIsFunction = function(fn, caller) { diff --git a/src/core/SpyFactory.js b/src/core/SpyFactory.js new file mode 100644 index 00000000..f36c299e --- /dev/null +++ b/src/core/SpyFactory.js @@ -0,0 +1,45 @@ +getJasmineRequireObj().SpyFactory = function(j$) { + + function SpyFactory() { + var self = this; + + this.createSpy = function(name, originalFn) { + return j$.Spy(name, originalFn); + }; + + this.createSpyObj = function(baseName, methodNames) { + var baseNameIsCollection = j$.isObject_(baseName) || j$.isArray_(baseName); + + if (baseNameIsCollection && j$.util.isUndefined(methodNames)) { + methodNames = baseName; + baseName = 'unknown'; + } + + var obj = {}; + var spiesWereSet = false; + + if (j$.isArray_(methodNames)) { + for (var i = 0; i < methodNames.length; i++) { + obj[methodNames[i]] = self.createSpy(baseName + '.' + methodNames[i]); + spiesWereSet = true; + } + } else if (j$.isObject_(methodNames)) { + for (var key in methodNames) { + if (methodNames.hasOwnProperty(key)) { + obj[key] = self.createSpy(baseName + '.' + key); + obj[key].and.returnValue(methodNames[key]); + spiesWereSet = true; + } + } + } + + if (!spiesWereSet) { + throw 'createSpyObj requires a non-empty array or object of method names to create spies for'; + } + + return obj; + }; + } + + return SpyFactory; +}; diff --git a/src/core/requireCore.js b/src/core/requireCore.js index 78fb343a..358e7e8c 100644 --- a/src/core/requireCore.js +++ b/src/core/requireCore.js @@ -48,6 +48,7 @@ var getJasmineRequireObj = (function (jasmineGlobal) { j$.ReportDispatcher = jRequire.ReportDispatcher(j$); j$.Spec = jRequire.Spec(j$); j$.Spy = jRequire.Spy(j$); + j$.SpyFactory = jRequire.SpyFactory(j$); j$.SpyRegistry = jRequire.SpyRegistry(j$); j$.SpyStrategy = jRequire.SpyStrategy(j$); j$.StringMatching = jRequire.StringMatching(j$);