2014-04-25 7 views
10

Ich verwende Mocha-Phantomjs Setup für Komponententests. Ich habe folgende Paket.json Scriot, um die Tests zu starten.npm Fehler ELIFECYCLE während des Tests

"scripts": { 
"test": "npm run testFlickr", 
"testFlickr": "mocha-phantomjs ./test/FlickrTest.html" 
} 

Dieser Lauf im Browser ok. Und wenn ich den Befehl npm test in cmd laufen, der Test lief in Ordnung, aber es gibt auch Fehler folgende

3 passing (5s) 
6 failing 


npm ERR! [email protected] testFlickr: `mocha-phantomjs ./test/FlickrTest.html` 
npm ERR! Exit status 6 
npm ERR! 
npm ERR! Failed at the [email protected] testFlickr script. 
npm ERR! This is most likely a problem with the flickr-test package, 
npm ERR! not with npm itself. 
npm ERR! Tell the author that this fails on your system: 
npm ERR!  mocha-phantomjs ./test/FlickrTest.html 
npm ERR! You can get their info via: 
npm ERR!  npm owner ls flickr-test 
npm ERR! There is likely additional logging output above. 
npm ERR! System Windows_NT 6.1.7600 
npm ERR! command "C:\\Program Files\\nodejs\\\\node.exe" "C:\\Program Files\\nod 
ejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "testFlickr" 
npm ERR! cwd C:\Users\user\Desktop\test 
npm ERR! node -v v0.10.26 
npm ERR! npm -v 1.4.3 
npm ERR! code ELIFECYCLE 
npm ERR! 
npm ERR! Additional logging details can be found in: 
npm ERR!  C:\Users\user\Desktop\test\npm-debug.log 
npm ERR! not ok code 0 
npm ERR! Test failed. See above for more details. 
npm ERR! not ok code 0 

Bitte kann mir jemand sagen, wie kann ich diesen Fehler beheben.

Antwort

3

Und wenn ich den Befehl npm Test in cmd laufen, den Testlauf in Ordnung

Nein, sie sind es nicht. Sie haben 6 fehlgeschlagene Tests. Der Exit-Code mocha-phantomjs entspricht der Anzahl der fehlgeschlagenen Tests. Führen Sie mocha-phantomjs ./test/FlickrTest.html direkt aus und sehen Sie, was fehlschlägt. Verwirklichen Sie das PhantomJS ist ein bisschen anders als Ihr Browser - Sie können have to debug it.

Ihr Skript-Setup ist ungerade. Sie sollten nur haben:

"scripts": { 
    "test": "mocha-phantomjs ./test/FlickrTest.html" 
} 

Dann werden die ungeraden Knoten Fehler sollten weggehen.

+0

Aber ich möchte, dass sie bei falschen Eingaben fehlgeschlagen sind. –

7

Wenn npm test ausgeführt wird, unterdrückt es ELIFECYCLE Fehler, so dass Sie nie auf diese Erfahrung stoßen.

Reference to code

Sobald Sie ein Testskript zu einem anderen Skript-Namen bewegen beginnen Sie ELIFECYCLE Fehler zu sehen.

Mein Fix ist, ein exit 0 an das Ende des Befehls hinzuzufügen. Für Ihren Code würde es so aussehen:

"scripts": { 
    "test": "npm run testFlickr", 
    "testFlickr": "mocha-phantomjs ./test/FlickrTest.html; exit 0" 
} 
+0

Ich habe dieses Problem festgestellt, weil ich mehrere Testskripts in meiner Datei 'package.json' haben wollte. – Sgnl

+1

Das Hinzufügen von '; exit 0' zum Ende beliebiger Skripte unterdrückt Fehler. – joemaller

+0

@joemaller nicht in Windows nicht. –

1

Dies ist ein Problem, wenn npm run verwendet wird, hat es mit Mokka verlässt mit Code == 0 zu tun, wenn ein Test nicht bestanden!. Wenn Sie unter Windows sind versuchen Sie dies:

"scripts": { 
    "test": "npm run testFlickr || ECHO.", 
    "testFlickr": "mocha-phantomjs ./test/FlickrTest.html || ECHO." 
} 
0

ich das gleiche Problem hatte, und was es für mich gerichtet war, als ich meine Unit-Tests laufen, tun NICHT Verwendung

npm run test 

statt Verwenden Sie:

npm test