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
Written by Jonathan Bowers
Related protips
2 Responses
A simpler method is to just use multiple beforeEach calls
What is the point of wrapping the "steps" into anonymous functions in this case? :)
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);Have a fresh tip? Share with Coderwall community!
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