In synchronous tests, both describe
and it
statements are executed in the order they are laid out.
Test Foo
should run before Bar
:
1 2 3 4 5 6 7
| describe('Suite', function () { it('Foo', function () { }); it('Bar', function () { }); });
|
Suite Foo
should run before Bar
:
1 2 3 4 5
| describe('Foo', function () { }); describe('Bar', function () { });
|
In asynchronous tests, the same ordering applies.
Test Foo should run before Bar even Foo takes much longer to execute, and Suite B should also run after Suite A:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var should = require('should'); describe('Suite A', function () { it('Foo', function (done) { setTimeout(function () { (true).should.equal(true); done(); }, 1000); }); it('Bar', function () { (true).should.equal(true); }); }); describe('Suite B', function () { it('Foo', function () { (true).should.equal(true); }); });
|
Result:
1 2 3 4 5 6 7 8 9
| Suite A ✓ Foo (1002ms) ✓ Bar Suite B ✓ Foo 3 passing (1s)
|
This is the great feature in Mocha.