From 4e47b78f1f3a3ddca06f93b22b02e8c04cea2429 Mon Sep 17 00:00:00 2001 From: Gregg Van Hove Date: Wed, 14 Sep 2016 16:06:44 -0700 Subject: [PATCH] Use `isFunction` to check for functionness in `callFake` - Fixes #1191 --- lib/jasmine-core/jasmine.js | 10 +++++++--- spec/core/SpyStrategySpec.js | 10 +++++----- src/core/SpyStrategy.js | 4 ++-- src/core/base.js | 4 ++++ src/core/requireCore.js | 2 +- 5 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 45721516..dc80c546 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -67,7 +67,7 @@ var getJasmineRequireObj = (function (jasmineGlobal) { j$.ReportDispatcher = jRequire.ReportDispatcher(); j$.Spec = jRequire.Spec(j$); j$.SpyRegistry = jRequire.SpyRegistry(j$); - j$.SpyStrategy = jRequire.SpyStrategy(); + j$.SpyStrategy = jRequire.SpyStrategy(j$); j$.StringMatching = jRequire.StringMatching(j$); j$.Suite = jRequire.Suite(j$); j$.Timer = jRequire.Timer(); @@ -147,6 +147,10 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) { return j$.isA_('Number', value); }; + j$.isFunction_ = function(value) { + return j$.isA_('Function', value); + }; + j$.isA_ = function(typeName, value) { return Object.prototype.toString.apply(value) === '[object ' + typeName + ']'; }; @@ -2120,7 +2124,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) { return SpyRegistry; }; -getJasmineRequireObj().SpyStrategy = function() { +getJasmineRequireObj().SpyStrategy = function(j$) { function SpyStrategy(options) { options = options || {}; @@ -2167,7 +2171,7 @@ getJasmineRequireObj().SpyStrategy = function() { }; this.callFake = function(fn) { - if(!(fn instanceof Function)) { + if(!j$.isFunction_(fn)) { throw new Error('Argument passed to callFake should be a function, got ' + fn); } plan = fn; diff --git a/spec/core/SpyStrategySpec.js b/spec/core/SpyStrategySpec.js index 860811b8..0965c04c 100644 --- a/spec/core/SpyStrategySpec.js +++ b/spec/core/SpyStrategySpec.js @@ -94,14 +94,14 @@ describe("SpyStrategy", function() { it('throws an error when a non-function is passed to callFake strategy', function() { var originalFn = jasmine.createSpy('original'), + spyStrategy = new jasmineUnderTest.SpyStrategy({fn: originalFn}), invalidFakes = [5, 'foo', {}, true, false, null, void 0, new Date(), /.*/]; - for (var i=0; i