Chapter 5. More Jasmine Features
Jasmine has a number of other useful features, which help you write tests that are more advanced.
Before and After
Another useful feature of Jasmine is actually a twofer: beforeEach and afterEach. They allow you to execute some code—you guessed it—before and after each spec. This can be very useful for factoring out common code or cleaning up variables after tests.
To execute some code before every spec, simply put it in a beforeEach. Note that you have to scope variables properly in order to have them throughout each spec:
describe("employee", function() {
var employee; // Note the scoping of this variable.
beforeEach(function() {
employee = new Employee;
});
it("has a name", function() {
expect(employee.name).toBeDefined();
});
it("has a role", function() {
expect(employee.role).toBeDefined();
});
});Similarly, if you’d like to execute something after each spec, simply put it in the cleverly named afterEach. I use this much less than beforeEach, but it’s useful when you want to do cleanup, for example:
describe("Calculator", function() {
var calculator = new Calculator;
afterEach(function() {
calculator.reset();
});
it("can add two positive integers", function() {
expect(calculator.add(5, 12)).toEqual(17);
});
it("can add two negative integers", function() {
expect(calculator.add(-5, -12)).toEqual(-17);
});
});Nested Suites
As your code gets more complex, you might want to organize your suites into groups, subgroups sub-subgroups, and so on. Jasmine ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access