grunt Jasmin-Knoten-Tests laufen zweimal

8

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%     
d-_-b 08.05.2015, 07:16
quelle

5 Antworten

2

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.

    
johnmcase 14.05.2015, 19:54
quelle
5

Ich konnte das Verhalten reproduzieren. Dies scheint zu geschehen:

  1. Die Aufgabe sucht im angegebenen Ordner ( spec in Ihrem Fall) nach Dateien mit Spezifikation im Namen.
  2. Dann sieht es wieder in jedem Ordner im ganzen Projekt nach Dateien mit spec im Namen aus.

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 [] :

zu setzen %Vor%

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.

    
1.618 11.05.2015 06:25
quelle
3

Dieses Grunt-Plugin ( Ссылка ) scheint tot zu sein ( Ссылка ).

Vielleicht ist es besser, zu Ссылка zu wechseln?

    
aeryaguzov 12.05.2015 14:48
quelle
2

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.

    
Kevin Hillinger 07.09.2015 21:47
quelle
0

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: Ссылка

    
avejidah 10.07.2015 20:47
quelle