From df818f3fbcdec59aadee88dd72efb512dcc70170 Mon Sep 17 00:00:00 2001 From: Elliot Nelson Date: Wed, 8 May 2019 09:36:12 -0400 Subject: [PATCH] rejectValue wraps non-Errors like throwError does --- spec/core/SpyStrategySpec.js | 14 ++++++++++++++ src/core/SpyStrategy.js | 4 +++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spec/core/SpyStrategySpec.js b/spec/core/SpyStrategySpec.js index ab13e4ab..f299792a 100644 --- a/spec/core/SpyStrategySpec.js +++ b/spec/core/SpyStrategySpec.js @@ -150,6 +150,20 @@ describe("SpyStrategy", function() { }).catch(done.fail); }); + it("allows a non-Error to be rejected, wrapping it in an exception when executed", function(done) { + jasmine.getEnv().requirePromises(); + + var originalFn = jasmine.createSpy("original"), + getPromise = function() { return Promise; }, + spyStrategy = new jasmineUnderTest.SpyStrategy({fn: originalFn, getPromise: getPromise}); + + spyStrategy.rejectValue('oops'); + spyStrategy.exec().then(done.fail).catch(function (error) { + expect(error).toEqual(new Error('oops')); + done(); + }).catch(done.fail); + }); + it("fails if promises are not available", function() { var originalFn = jasmine.createSpy("original"), spyStrategy = new jasmineUnderTest.SpyStrategy({fn: originalFn}); diff --git a/src/core/SpyStrategy.js b/src/core/SpyStrategy.js index 7365f87c..b8a3db88 100644 --- a/src/core/SpyStrategy.js +++ b/src/core/SpyStrategy.js @@ -60,8 +60,10 @@ getJasmineRequireObj().SpyStrategy = function(j$) { */ this.rejectValue = function(value) { var Promise = requirePromise('rejectValue'); + var error = (value instanceof Error) ? value : new Error(value); + self.plan = function() { - return Promise.reject(value); + return Promise.reject(error); }; return self.getSpy(); };