leech
leech

Reputation: 8431

Stop jasmine test after first expect fails

I'm familiar with python unittest tests where if an assertion fails, that test is marked as "failed" and it moves on to other tests. Jasmine on the other hand will continue through all expects even if the one of them fails. How can I make Jasmine stop processing a test after the first expectation fails?

it ("shouldn't need to test other expects if the first fails", function() {
    expect(array.length).toBe(1);

    // don't need to check this if the first failed.
    expect(array[0]).toBe("foo");
});

Am I thinking about it wrong? I have some tests with lots of expect's and it seems like a waste to show all the stack traces when only the first is wrong really.

Upvotes: 21

Views: 19898

Answers (5)

Terry Tú Nguyễn
Terry Tú Nguyễn

Reputation: 380

I'm using Jasmine in Appium (a tool to test React Native apps).

I fixed the issue by adding stopSpecOnExpectationFailure=true to Jasmine configs

jasmine v3.8.0 & jasmine-core v3.8.0

Upvotes: 0

uzay95
uzay95

Reputation: 16632

Jasmine has stop on failure feature and you can check it here: https://plnkr.co/plunk/Ko5m6MQz9VUPMMrC

This starts jasmine with oneFailurePerSpec property.

enter image description here enter image description here enter image description here

Upvotes: 1

Attila123
Attila123

Reputation: 1052

According to the comments of https://github.com/jasmine/jasmine/issues/414 I figured out that 2 solutions exists for this: https://github.com/radialanalytics/protractor-jasmine2-fail-whale https://github.com/Updater/jasmine-fail-fast

I just started to use the protractor-jasmine2-fail-whale because it seems to have more features. Although to take screenshots in case of test failures I currently use protractor-jasmine2-html-reporter.

Upvotes: 0

TachyonVortex
TachyonVortex

Reputation: 8592

@Gregg's answer was correct for the latest version of Jasmine at that time (v2.0.0).

However, since then, this new feature was added in v2.3.0:

Allow user to stop a specs execution when an expectation fails (Fixes #577)

It's activated by adding throwFailures=true to the query string of the runner page, eg:

http://localhost:8000/?throwFailures=true

Upvotes: 13

Gregg
Gregg

Reputation: 2638

Jasmine doesn't support failing early, in a single spec. The idea is to give you all of the failures in case that helps figure out what is really wrong in your spec.

Upvotes: 8

Related Questions