diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index 6e6d4d59..c09eaf21 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -320,14 +320,14 @@ getJasmineRequireObj().Spec = function(j$) { }; } - Spec.prototype.addExpectationResult = function(passed, data) { + Spec.prototype.addExpectationResult = function(passed, data, isError) { var expectationResult = this.expectationResultFactory(data); if (passed) { this.result.passedExpectations.push(expectationResult); } else { this.result.failedExpectations.push(expectationResult); - if(this.throwOnExpectationFailure){ + if (this.throwOnExpectationFailure && !isError) { throw new j$.errors.ExpectationFailed(); } } @@ -383,7 +383,7 @@ getJasmineRequireObj().Spec = function(j$) { expected: '', actual: '', error: e - }); + }, true); }; Spec.prototype.disable = function() { diff --git a/spec/core/SpecSpec.js b/spec/core/SpecSpec.js index 4ac7e35c..01cbebd8 100644 --- a/spec/core/SpecSpec.js +++ b/spec/core/SpecSpec.js @@ -276,6 +276,19 @@ describe("Spec", function() { expect(resultCallback.calls.first().args[0].failedExpectations).toEqual(['failed']); }); + it("does not throw an ExpectationFailed error when handling an error", function() { + var resultCallback = jasmine.createSpy('resultCallback'), + spec = new j$.Spec({ + queueableFn: { fn: function() {} }, + expectationResultFactory: function(data) { return data; }, + queueRunnerFactory: function(attrs) { attrs.onComplete(); }, + resultCallback: resultCallback, + throwOnExpectationFailure: true + }); + + spec.onException('failing exception'); + }); + it("can return its full name", function() { var specNameSpy = jasmine.createSpy('specNameSpy').and.returnValue('expected val'); diff --git a/src/core/Spec.js b/src/core/Spec.js index a11a82a0..3305df11 100644 --- a/src/core/Spec.js +++ b/src/core/Spec.js @@ -28,14 +28,14 @@ getJasmineRequireObj().Spec = function(j$) { }; } - Spec.prototype.addExpectationResult = function(passed, data) { + Spec.prototype.addExpectationResult = function(passed, data, isError) { var expectationResult = this.expectationResultFactory(data); if (passed) { this.result.passedExpectations.push(expectationResult); } else { this.result.failedExpectations.push(expectationResult); - if(this.throwOnExpectationFailure){ + if (this.throwOnExpectationFailure && !isError) { throw new j$.errors.ExpectationFailed(); } } @@ -91,7 +91,7 @@ getJasmineRequireObj().Spec = function(j$) { expected: '', actual: '', error: e - }); + }, true); }; Spec.prototype.disable = function() {