Throw a recognizable Error message when fail outside of a spec.

Fixes #1017
This commit is contained in:
Gregg Van Hove
2017-04-11 12:02:29 -07:00
parent 98569ba0f3
commit 19b83a7434
3 changed files with 25 additions and 0 deletions

View File

@@ -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 += ': ';

View File

@@ -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();

View File

@@ -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 += ': ';