diff --git a/spec/core/integration/MatchersSpec.js b/spec/core/integration/MatchersSpec.js index 64c780cd..e1a1ada0 100644 --- a/spec/core/integration/MatchersSpec.js +++ b/spec/core/integration/MatchersSpec.js @@ -294,15 +294,12 @@ describe('Matchers (Integration)', function() { }); describe('toBeRejectedWithError', function() { - function MyCustomError() {} - MyCustomError.prototype = new Error(); - verifyPassesAsync(function(env) { - return env.expectAsync(Promise.reject(new MyCustomError())).toBeRejectedWithError(MyCustomError); + return env.expectAsync(Promise.reject(new Error())).toBeRejectedWithError(Error); }); verifyFailsAsync(function(env) { - return env.expectAsync(Promise.resolve()).toBeRejectedWithError(MyCustomError); + return env.expectAsync(Promise.resolve()).toBeRejectedWithError(Error); }); }); diff --git a/spec/core/matchers/async/toBeRejectedWithErrorSpec.js b/spec/core/matchers/async/toBeRejectedWithErrorSpec.js index ebf2e9e6..3b207645 100644 --- a/spec/core/matchers/async/toBeRejectedWithErrorSpec.js +++ b/spec/core/matchers/async/toBeRejectedWithErrorSpec.js @@ -27,6 +27,21 @@ describe('#toBeRejectedWithError', function () { }); }); + it('passes when Error matches and is exactly Error', function() { + jasmine.getEnv().requirePromises(); + + var matcher = jasmineUnderTest.asyncMatchers.toBeRejectedWithError(jasmineUnderTest.matchersUtil), + actual = Promise.reject(new Error()); + + return matcher.compare(actual, Error).then(function (result) { + expect(result).toEqual(jasmine.objectContaining({ + pass: true, + message: 'Expected a promise not to be rejected with Error, but it was.' + })); + }); + + }); + it('passes when Error message matches a string', function () { jasmine.getEnv().requirePromises(); diff --git a/src/core/matchers/async/toBeRejectedWithError.js b/src/core/matchers/async/toBeRejectedWithError.js index 43dd4bc9..8a578a60 100644 --- a/src/core/matchers/async/toBeRejectedWithError.js +++ b/src/core/matchers/async/toBeRejectedWithError.js @@ -76,7 +76,7 @@ getJasmineRequireObj().toBeRejectedWithError = function(j$) { function getExpectedFromArgs(arg1, arg2) { var error, message; - if (typeof arg1 === 'function' && j$.isError_(arg1.prototype)) { + if (isErrorConstructor(arg1)) { error = arg1; message = arg2; } else { @@ -90,4 +90,8 @@ getJasmineRequireObj().toBeRejectedWithError = function(j$) { printValue: j$.fnNameFor(error) + (typeof message === 'undefined' ? '' : ': ' + j$.pp(message)) }; } + + function isErrorConstructor(value) { + return typeof value === 'function' && (value === Error || j$.isError_(value.prototype)); + } };