Jasmine afterEach() Function

The Jasmine afterEach() function allows you to execute some code after any spec in the it() block.

Though generally used to reset/clean up purposes at the end of specs, here we illustrate with a simple example of incrementing a variable on call of the afterEach() function after each spec.

				
				describe('Value of n', function() {
				  	var n = 0;
				  	afterEach(function(done) {
					    setTimeout(function() {
					      n++;
					      done();
					    }, 1500);
				  	});
				  	it('is 0', function() {
					    expect(n).toEqual(0);
				  	});
				  	it('is 1', function() {
					    expect(n).toEqual(1);
				  	});
				  	it('is 2', function() {
					    expect(n).toEqual(2);
				  	});
				});
				
			

The variable n is first initialized to 0. The afterEach() function after it is bypassed maidenly to run the first spec - the first it() block - with the value of n still at 0, and the test is passed. After the first spec is executed, the afterEach() function is invoked, and n is incremented to 1. So when the execution moves to the next it() block, where the expectation for the value of n is 1, the test is passed again. And the same happens before the execution of the last it() block too. The afterEach() function is invoked again, n is incremented to 2, and the spec is passed.

On running the test suite configured in Grunt, the output to the terminal looks like