O'Reilly logo

JavaScript Testing with Jasmine by Evan Hahn

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required