2012-05-12 13 views
46

Ich benutze jetzt Mokka für Javascript Unit-Testing.Globale `vor` und` vor' jedem` für Mokka?

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

Wie stelle ich eine globale before und beforeEach für alle von ihnen (oder einige von ihnen)?

Antwort

26

Deklarieren Sie eine before oder beforeEach in einer separaten Datei (ich verwende spec_helper.coffee) und erfordern Sie es.

spec_helper.coffee

afterEach (done) -> 
    async.parallel [ 
    (cb) -> Listing.remove {}, cb 
    (cb) -> Server.remove {}, cb 
    ], -> 
    done() 

test_something.coffee

require './spec_helper' 
+0

Können Sie etwas erklären, was passiert dort? – Gobliins

64

In der Wurzel des Testordner, erstellen Sie einen globalen Test Helfer test/helper.js, die Ihr vor und hat before

// globals 
global.assert = require('assert'); 

// setup 
before(); 
beforeEach(); 

// teardown 
after(); 
afterEach(); 
+8

Sie sollten es nicht explizit benötigen. In der Tat wird es einen Fehler verursachen, weil vorher, vorEach, usw. im erforderlichen Kontext nicht existiert. Solange es im Testverzeichnis enthalten ist, sollte der Code vor jedem der Tests ausgeführt werden. – khoomeister

+1

danke @khoomeister das war für eine alte Version! aktualisiert – AJcodez

+1

Ich benutze das, sehr nett, aber ich frage mich, wo man Dokumente darauf finden? – Zlatko

-1

Die Verwendung eines Moduls kann den globalen Setup/Teardown vereinfachen Ihre Testsuite. Hier ist ein Beispiel RequireJS (AMD-Module) mit:

Lassen Sie uns zunächst eine Testumgebung mit unserem globalen Setup/Teardown definieren:

// test-env.js 

define('test-env', [], function() { 
    // One can store globals, which will be available within the 
    // whole test suite. 
    var my_global = true; 

    before(function() { 
    // global setup 
    }); 
    return after(function() { 
    // global teardown 
    }); 
}); 

In unserem JS Läufer (in Mokka HTML-runner enthalten, entlang der anderen libs und Testdateien als <script type="text/javascript">…</script> oder besser als eine externe JS-Datei):

:

require([ 
      // this is the important thing: require the test-env dependency first 
      'test-env', 

      // then, require the specs 
      'some-test-file' 
     ], function() { 

    mocha.run(); 
}); 

some-test-file.js wie dies könnte umgesetzt

Verwandte Themen