2012-05-12 6 views
44

Ich benutze Jasmine, um Tests zu schreiben.Globale `beforeEach` in Jasmin?

Ich habe mehrere Testdateien, jede Datei hat eine beforeEach, aber sie sind genau das gleiche.

Wie stelle ich eine globalbeforeEach für sie zur Verfügung?

Antwort

7

Sie können es in Ihre spec_helper.js Datei einfügen und es sollte gut funktionieren.

+0

Enthält diese 'spec_helper.js' wird automatisch von Jasmin erkannt werden? – Freewind

+0

Nicht automatisch - wir haben unser Verzeichnis 'helpers' hinzugefügt. – x1a4

+1

Meinst du, wir sollten ('./ spec_helper') 'in jeder unserer Testdateien benötigen? – Freewind

57

Die Antwort von x1a4 hat mich verwirrt. Dies kann mehr klar:

Wenn Sie eine beforeEach Funktion außerhalb alle describe Blöcke erklären, sie vor jedem Test auslösen wird (so vor jedem it). Es spielt keine Rolle, ob Sie die beforeEach vor oder nach Ihrer describe Blöcke deklarieren.

It's not mentioned in the documentation.

// Example: 

beforeEach(function() { 
    localStorage.clear(); 
}); 

describe('My tests', function() { 
    describe('Test localstorage', function() { 

     it('Adds an item to localStorage', function() { 
      localStorage.setItem('foo', 'bar'); 
      expect(localStorage.getItem('foo')).toBe('bar'); 
     }); 

     it('Is now empty because our beforeEach cleared localStorage', function() { 
      expect(localStorage.getItem('foo')).toBe(null); 
     }); 

    }); 
});