2013-05-09 5 views
6

Ich versuche, Intern zu testen, um zu sehen, ob es gut für ein Test-Framework passen würde. Ich versuche den folgenden Code in Intern zu testen.Kann Intern nicht zur Ausführung von Node.js Modul

var HelloWorld; 

HelloWorld = (function() { 

    function HelloWorld (name) { 
    this.name = name || "N/A"; 
    } 

    HelloWorld.prototype.printHello = function() { 
    console.log('Hello, ' + this.name); 
    }; 

    HelloWorld.prototype.changeName = function(name) { 
    if (name === null || name === undefined) { 
     throw new Error('Name is required'); 
    } 
    this.name = name; 
    }; 

    return HelloWorld; 

})(); 

exports = module.exports = HelloWorld; 

Die Datei wird in 'js-test-Projekte/Knoten/lib/HelloWorld.js' und Intern befindet sich im 'js-test-Projekte/intern' befindet. Ich benutze den Zweig 1.0.0 von Intern. Immer, wenn ich versuche, die Datei einzubinden und den Test zu starten, erhalte ich nach "Default to console reporter" keine Ausgabe. Hier ist die Testdatei.

define([ 
    'intern!tdd', 
    'intern/chai!assert', 
    'dojo/node!../lib/HelloWorld' 
], function (tdd, assert, HelloWorld) { 
    console.log(HelloWorld); 
}); 
+1

Für jemanden nicht vertraut mit Knoten. js, das hörte sich an wie ein Praktikumsbeitrag :) –

+1

Ich hasse es, wenn ich meinen Praktikanten nicht dazu bringen kann zu laufen, was ich will. – AaronLS

Antwort

7

1. die folgende Verzeichnisstruktur (bezogen auf die Frage) Unter der Annahme:

js-test-projects/ 
    node/ 
     lib/ 
      HelloWorld.js - `HelloWorld` Node module 
     tests/ 
      HelloWorld.js - Tests for `HelloWorld` 
      intern.js  - Intern configuration file 
    intern/ 

2. Ihre Intern Konfigurationsdatei sollte Informationen über die node Paket enthalten und alle Suiten auszuführen:

// ... 

// Configuration options for the module loader 
loader: { 
    // Packages that should be registered with the loader in each testing environment 
    packages: [ 'node' ] 
}, 

// Non-functional test suite(s) to run 
suites: [ 'node/tests/HelloWorld' ] 

// ... 

3. Ihre Testdatei s hould Last HelloWorld Intern Version von Dojo verwendet wird, wie folgt aus:

define([ 
    'intern!tdd', 
    'intern/chai!assert', 
    'intern/dojo/node!./node/lib/HelloWorld.js' 
], function (tdd, assert, HelloWorld) { 
    console.log(HelloWorld); 
}); 

Hinweis: Sie nicht haben Intern Version von Dojo zu verwenden, um die HelloWorld Knotenmodul in diesem AMD Test zu laden, ist es nur eine bequeme Möglichkeit, dies zu tun. Wenn Sie ein anderes AMD-Plugin haben, dass Knoten ein Knotenmodul erfordert, ist das völlig in Ordnung.

4. Schließlich die Tests in einer Node.js-Umgebung ausgeführt werden, verwenden client.js Knoten Läufer Intern indem Sie den folgenden Befehl aus dem Verzeichnis intern Ausgabe:

node client.js config=node/tests/intern 
+2

Beachten Sie, dass, wenn Ihr Node-Modul bereits in einem auflösbaren 'node_modules' -Verzeichnis ist, Sie nur' intern/dojo/node! Node/lib/HelloWorld' verwenden. –

Verwandte Themen