Skip to content

Commit

Permalink
Throw a recognizable Error message when fail outside of a spec.
Browse files Browse the repository at this point in the history
Fixes #1017
  • Loading branch information
Gregg Van Hove committed Apr 11, 2017
1 parent 98569ba commit 19b83a7
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lib/jasmine-core/jasmine.js
Expand Up @@ -1148,6 +1148,10 @@ getJasmineRequireObj().Env = function(j$) {
};

this.fail = function(error) {
if (!currentRunnable()) {
throw new Error('\'fail\' was used when there was no current spec, this could be because an asynchronous test timed out');
}

var message = 'Failed';
if (error) {
message += ': ';
Expand Down
17 changes: 17 additions & 0 deletions spec/core/integration/EnvSpec.js
Expand Up @@ -212,6 +212,23 @@ describe("Env integration", function() {
env.execute();
});

it("produces an understandable error message when 'fail' is used outside of a current spec", function(done) {
var env = new jasmineUnderTest.Env(),
reporter = jasmine.createSpyObj('fakeReporter', ['jasmineDone']);

reporter.jasmineDone.and.callFake(done);
env.addReporter(reporter);

env.describe("A Suite", function() {
env.it("an async spec that is actually synchronous", function(underTestCallback) {
underTestCallback();
});
expect(function() { env.fail(); }).toThrowError(/'fail' was used when there was no current spec/);
});

env.execute();
});


it("calls associated befores/specs/afters with the same 'this'", function(done) {
var env = new jasmineUnderTest.Env();
Expand Down
4 changes: 4 additions & 0 deletions src/core/Env.js
Expand Up @@ -532,6 +532,10 @@ getJasmineRequireObj().Env = function(j$) {
};

this.fail = function(error) {
if (!currentRunnable()) {
throw new Error('\'fail\' was used when there was no current spec, this could be because an asynchronous test timed out');
}

var message = 'Failed';
if (error) {
message += ': ';
Expand Down

0 comments on commit 19b83a7

Please sign in to comment.