2.5 KiB
layout | title |
---|---|
default | Before and After a Jasmine Spec |
beforeEach
A suite can have a beforeEach()
declaration. It takes a function that is run before each spec. For example:
{% highlight javascript %} describe('some suite', function () { var suiteWideFoo;
beforeEach(function () { suiteWideFoo = 1; });
it('should equal bar', function () { expect(suiteWideFoo).toEqual(1); }); }); {% endhighlight %}
A runner can also have beforeEach()
declarations. Runner beforeEach()
functions are executed before every spec in all suites, and execute BEFORE suite beforeEach()
functions. For example:
{% highlight javascript %} var runnerWideFoo = [];
beforeEach(function () { runnerWideFoo.push('runner'); });
describe('some suite', function () { beforeEach(function () { runnerWideFoo.push('suite'); });
it('should equal bar', function () { expect(runnerWideFoo).toEqual(['runner', 'suite']); }); }); {% endhighlight %}
afterEach
Similarly, there is an afterEach()
declaration. It takes a function that is run after each spec. For example:
{% highlight javascript %} describe('some suite', function () { var suiteWideFoo; afterEach(function () { suiteWideFoo = 0; });
it('should equal 1', function () { expect(suiteWideFoo).toEqual(1); });
it('should equal 0 after', function () { expect(suiteWideFoo).toEqual(0); }; }); {% endhighlight %}
A runner can also have an afterEach()
declarations. Runner afterEach()
functions are executed after every spec in all suites, and execute AFTER suite afterEach()
functions. For example:
{% highlight javascript %} var runnerWideFoo = [];
afterEach(function () { runnerWideFoo.push('runner'); });
describe('some suite', function () { afterEach(function () { runnerWideFoo.push('suite'); });
it('should be empty', function () { expect(runnerWideFoo).toEqual([]); });
it('should be populated after', function () { expect(runnerWideFoo).toEqual(['suite', 'runner']); }; }); {% endhighlight %}
Single-spec After functions
A spec may ask Jasmine to execute some code after the spec has finished running; the code will run whether the spec finishes successfully or not. Multiple after functions may be given.
{% highlight javascript %} describe('some suite', function () { it(function () { var originalTitle = window.title; this.after(function() { window.title = originalTitle; }); MyWindow.setTitle("new value"); expect(window.title).toEqual("new value"); }); {% endhighlight %}