2016-05-27 7 views
1

Ich versuche einige Jasmine-Tests zu debuggen, die ich mit WebStorm 2016.1.2 geschrieben habe.NodeJS, WebStorm und Jasmine: ReferenceError: describe ist beim Debuggen nicht definiert

Mein Test-Code sieht wie folgt aus:

│ 
├───node_modules 
│ ├───.bin 
│ ├───aws-sdk 
│ │ └───<snip> 
│ ├───jasmine 
│ │ └───<snip> 
│ ├───jasmine-core 
│ │ └───<snip> 
│ ├───karma 
│ │ └───<snip> 
│ ├───karma-jasmine 
│ │ └───<snip> 
│ ├───should 
│ │ └───<snip> 
│ └───sinon 
│  └───<snip> 
├───spec 
│ ├───support 
│ │ └───jasmine.json 
│ └───my-lib.spec.js 
└───my-lib.js 

Und meine NodeJS Einstellungen in WebStorm wie folgt aussehen:

var should = require("should"); 
var myLib = require("../my-lib"); 

describe("Scenario",() => { 
    it("works as expected",() => { 
     myLib.do().should.not.throw() 
    }); 
}); 

Meine Verzeichnisstruktur sieht wie folgt aus

WebStorm Javascript Library Settings

Um zu debuggen, treffe ich nur F 5 und wählen Sie die my-lib.spec.js Datei zum Ausführen. Ich erhalte dann den folgenden Stack-Trace:

"C:\Program Files (x86)\JetBrains\WebStorm 2016.1.2\bin\runnerw.exe" "C:\Program Files\nodejs\node.exe" --debug-brk=22714 my-lib.spec.js 
Debugger listening on port 22714 
c:\Users\<me>\WebstormProjects\my-lib\spec\my-lib.spec.js:4 
describe("Scenario",() => { 
^ 

ReferenceError: describe is not defined 
    at Object.<anonymous> (c:\Users\<me>\WebstormProjects\my-lib\spec\<my-lib>.js:4:1) 
    at Module._compile (module.js:410:26) 
    at Object.Module._extensions..js (module.js:417:10) 
    at Module.load (module.js:344:32) 
    at Function.Module._load (module.js:301:12) 
    at Module.runMain [as _onTimeout] (module.js:442:10) 
    at Timer.listOnTimeout (timers.js:92:15) 

Process finished with exit code 1 

Wenn jemand weiß, wie WebStorm machen erkennen, dass Jasmin global installiert ist, dass groß sein würde.

EDIT: Ich habe ein Karma Lauf-Konfiguration eingerichtet, wie durch lena mit folgender Konfiguration vorgeschlagen: Karma configuration

Wenn ich F5 traf dies zu laufen, ein Chrome-Browser öffnet sich und leer ist (I lassen Sie das JetBrains-Plugin für Chrome installiert)

+0

Sollten Sie nicht Mokka verwenden zusammen mit sollte? –

+0

Können Sie nur verlangen ('Jasmine'); in der Testdatei? – joshvito

Antwort

1

Versuchen Sie es mit jasmine-node Modul.

Es hängt von dem Befehl ab, der an die js-Datei gesendet wird, wenn Sie F5 drücken. Es muss jasmine-node <test files> nicht node <test files> sein.

Versuchen Sie das in der Konsole/Terminal und sehen, ob es funktioniert. Es könnte Websturm sein, der den falschen Befehl sendet.

Wenn Sie noch keinen Jasmin Knoten installiert bekommen können Sie tun

npm install jasmine-node -g

+1

'Jasmine-Node' wurde seit langer Zeit nicht mehr aktualisiert und unterstützt nicht die neueste Version von Jasmine. – brimble2010

-1

In Ihrem Hauptordner gibt es eine 'package.json' Datei. dass Öffnen und Sie werden etwas sehen:

{ 
    "name": "prep", 
    "version": "1.0.0", 
    "main": "server/server.js", //This can be different 
    "scripts": { 
    "lint": "eslint .", 
    "start": "node .", 
    "posttest": "npm run lint && nsp check" 
    }, .... 

Dann folgende nach „Start“ hinzufügen: „Knoten“ => „Test“: „Jasmin“. Es sollte wie folgt aussehen:

{ 
    "name": "prep", 
    "version": "1.0.0", 
    "main": "server/server.js", 
    "scripts": { 
    "lint": "eslint .", 
    "start": "node .", 
    "test": "jasmine", 
    "posttest": "npm run lint && nsp check" 
    },.... 

Dann laufen ‚npm ​​Test‘ im Terminal