diff --git a/src/ngMock/angular-mocks.js b/src/ngMock/angular-mocks.js index af47d4b3e7e2..3ad263ce81b8 100644 --- a/src/ngMock/angular-mocks.js +++ b/src/ngMock/angular-mocks.js @@ -3057,7 +3057,7 @@ angular.mock.$RootScopeDecorator = ['$delegate', function($delegate) { this.stack = e.stack + '\n' + errorForStack.stack; if (e.stackArray) this.stackArray = e.stackArray; }; - ErrorAddingDeclarationLocationStack.prototype.toString = Error.prototype.toString; + ErrorAddingDeclarationLocationStack.prototype = Error.prototype; window.inject = angular.mock.inject = function() { var blockFns = Array.prototype.slice.call(arguments, 0); diff --git a/test/ngMock/angular-mocksSpec.js b/test/ngMock/angular-mocksSpec.js index 04d5493f2659..be180a18c089 100644 --- a/test/ngMock/angular-mocksSpec.js +++ b/test/ngMock/angular-mocksSpec.js @@ -631,7 +631,6 @@ describe('ngMock', function() { inject(); // Trigger the tests in `module` }); - }); @@ -985,6 +984,27 @@ describe('ngMock', function() { }); } }); + + it('Errors should be caught by jasmine\'s toThrowError', function() { + //create function that causes an error + function causeNgMocksError() { + module(function($provide) { + //cause $provide.factory to include an error + $provide.factory('causeError', function() { + //Say for example, some mock module caused an error when instantiated + throw new Error("Error!"); + }); + }); + + //call the injector on 'causeError' to make sure the provider is called + var causeError; + inject(function(_causeError_) { + causeError = _causeError_; + }); + } + + expect(causeNgMocksError).toThrowError(/Error/g); + }); }); });