Ich habe grunt eingerichtet, um node.js Jasmin-Tests auszuführen. Aus irgendeinem Grund zeigen die Ergebnisse mit dieser Konfiguration immer doppelt so viele Tests an.
Hier ist meine Konfiguration:
Ich benutze Jasmin-Knoten , der in Grunzen steckt.
/spec/some-spec.js :
%Vor%Gruntfile.js :
%Vor%Dies führt dazu, dass zwei Tests statt eins ausgeführt werden.
%Vor%Das Projekt jasmine-node ist ziemlich alt. Das letzte Commit stammt vom Juli 2014. Die grunt-jasmine-knoten plugin scheint aktiv zu sein, aber gegen etwas zu laufen, das abgestanden wird, scheint ein wenig sinnloser IMHO zu sein.
Um CommonJS-Module mit Jasmine zu testen, würde ich empfehlen, Karma zusammen mit der Karma-Jasmin und karma-commonjs Plugins. Ich habe Ihr Beispiel mit den folgenden Dateien arbeiten:
package.json
%Vor%karma.conf.js
%Vor%Gruntfile.js (optional, wenn Sie immer noch grunt verwenden möchten)
%Vor% Sie sollten den Karma-Befehlszeilen-Runner auch global installieren, genau wie Sie es wahrscheinlich mit grunt getan haben. npm install -g karma-cli
Von deiner Kommandozeile kannst du Karma starten, indem du karma start
eingibst. Es führt die Tests aus und überwacht dann Ihre Dateien und führt sie bei jedem Speichern erneut aus. (Sehr schön)
Alternativ können Sie karma start --single-run
ausführen, um Ihre Tests nur einmal auszuführen und zu beenden. Wenn Sie auch Ihre Gruntdatei aktualisiert haben, können Sie auch grunt
ausführen, um die Tests einmal auszuführen.
Ich konnte das Verhalten reproduzieren. Dies scheint zu geschehen:
spec
in Ihrem Fall) nach Dateien mit Spezifikation im Namen. Was damit zusammenhängt, sind zwei überlappende Sätze von Testdateien, die ausgeführt werden sollen.
Mein erster Versuch, es zu einem logischeren Verhalten zu zwingen, bestand darin, specNameMatcher: null
(Standard ist 'spec') zu setzen und den Ordner auf 'spec /' zu belassen. Dies führt dazu, dass keine Tests ausgeführt werden, da anscheinend beide Bedingungen (Name und Ordner) für Dateien im angegebenen Ordner erfüllt sein müssen. Sie erhalten das gleiche Problem, wenn specNameMatcher
auf dem Standardwert belassen wird, aber die Dateien im Ordner haben keine 'spec' im Namen.
Was funktioniert ist, den Ordner (oder "test set" oder was auch immer Sie es nennen wollen) auf []
:
Der Haken ist, dass wenn Sie any andere Dateien irgendwo im Projekt mit 'spec' im Namen haben, diese fälschlicherweise für Tests von Jasmine gehalten werden.
Ich würde dieses Verhalten als einen Fehler betrachten und es sollte wahrscheinlich über die Github-Probleme-Seite des Projekts gemeldet werden.
Die aktuell gewählte Antwort ist nicht die Lösung. Sie ändern einfach den Ausdruck, der Ihren Tests entspricht. Die Antwort lautet wie folgt:
%Vor%Hier können Sie sehen, dass "all" auf * 'spec / spec.js' gesetzt ist. Dies wird nach allen Tests suchen.
Zweitens, nur weil ein Projekt nicht kürzlich begangen wurde, bedeutet es nicht, dass es "alt" ist. Jasmin-Knoten ist einfach stabil.
Ich habe das gleiche Problem mit Grunt-Jasmine-Knoten, und wie aeryaguzov darauf hinweist, dass das Projekt nicht mehr aufrechterhalten wird. Der Wechsel zu grunt-jasmine-node-new löst das Problem für mich.
grunt-jasmine-node-new ist eine Verzweigung von grunt-jasmine-node, die aktiv gepflegt wird, und kann hier gefunden werden: Ссылка
Tags und Links javascript gruntjs node.js jasmine jasmine-node