Last Updated: February 25, 2016
·
5.302K
· jonotron

series steps in mocha beforeEach

mocha's beforeEach allows you to create multiple series steps that need to run before your tests run. Up until now I've been doing a combination of callback nesting or async workflows. Seems obvious now that beforeEach just creates a list of operations to execute.

Occasionally you need to do multiple asynchronous things before a test, for example:

beforeEach(function(done) {
    loadSomeData(function() {
        setSomeOtherTestVariables(done);
    });
});

Nesting callbacks is gross, so you may decide to improve readability with async:

beforeEach(function(done) {
    async.series([
        loadSomeData,
        setSomeOtherTestVariables
    ], done);
});

A simpler method is to just use multiple beforeEach calls:

beforeEach(function(done) {
    loadSomeData(done);
});

beforeEach(function(done) {
    setSomeOtherTestVariables(done);
});

You probably still need to use something like async for parallel operations, but for series operations this works quite well

2 Responses
Add your response

A simpler method is to just use multiple beforeEach calls

What is the point of wrapping the "steps" into anonymous functions in this case? :)

over 1 year ago ·

In this example, there is no point (other than for illustration I suppose). The next step in refactoring would be to just pass the "steps" into beforeEach:

beforeEach(loadSomeData);
beforeEach(setSomeOtherTestVariables);
over 1 year ago ·

Have a fresh tip? Share with Coderwall community!

Post
Post a tip
Did you know?

JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.

Security insights from Cside