Ich habe eine Reihe von fehlerhaften Spezifikationen aufgrund einer ziemlich großen architektonischen Änderung. Ich möchte daran arbeiten, sie einzeln zu beheben, indem ich sie mit "Fokus" markiere.
Hat jasmine.js eine solche Funktion? Ich habe geschworen, dass ich irgendwann gelesen habe, dass dies der Fall ist, aber ich sehe es nicht in den Dokumenten.
Antworten:
Sie können eine einzelne Spezifikation ausführen, indem Sie die URL für die Spezifikation verwenden
Jetzt können Sie nur die gesamte Spezifikation mit dieser URL
http://localhost:8888?spec=MySpec
und dem ersten Test mit ausführenhttp://localhost:8888?spec=MySpec+function+1
quelle
describe("MySpec", ...)
und nicht dieses :describe("MySpec blah blah", ...)
? Es scheint ein Teilstring-Match zu sein.http://localhost:8888?spec=function+1
sollte auch funktionieren (oft muss MySpec nicht angegeben werden)fdescribe
,fit
Wenn Sie Karma verwenden, können Sie nur einen Test mit
fit
oderfdescribe
(iit
undddescribe
in Jasmine vor 2.1) aktivieren .Dies läuft nur
Spec1
:Dies läuft nur
testA
:quelle
fdescribe
und einfit
: github.com/jasmine/jasmine/commit/…iit
undddescribe
sind Ergänzungen von Karma, nicht Jasmin.xit
undfit
Init
schwer zu lesen und fehleranfällig sind?Im Kern seit 2.1 mit
fit
undfdescribe
.quelle
Für alle, die darüber stolpern, ist es besser, dieses Plugin zu verwenden: https://github.com/davemo/jasmine-only
Damit können Sie die Spezifikations-Exklusivität direkt für den Code wie folgt festlegen:
Es gab eine lange Diskussion, um dies zum Jasmin-Kern hinzuzufügen, siehe: https://github.com/pivotal/jasmine/pull/309
Wenn Sie Jasmine zufällig über Karma / Testacular verwenden, sollten Sie bereits Zugriff auf
ddescribe()
und habeniit()
quelle
fdescribe
undfit
- "f" bedeutet "fokussiert". Siehe auch jasmine.github.io/2.1/focused_specs.htmlEs gibt einige Möglichkeiten, wie Sie dies tun können.
Es gibt: Jasmines Feature Focused Specs (2.2): http://jasmine.github.io/2.2/focused_specs.html
Wenn Sie die Spezifikationen fokussieren, werden sie als einzige Spezifikationen ausgeführt. Jede mit fit deklarierte Spezifikation ist fokussiert.
Die Idee, meine Tests (fit und fdescribe) so zu bearbeiten, dass sie selektiv ausgeführt werden, gefällt mir jedoch nicht wirklich. Ich bevorzuge einen Testläufer wie Karma, der Tests mit einem regulären Ausdruck herausfiltern kann.
Hier ist ein Beispiel mit Grunzen .
Wenn Sie gulp verwenden (das ist mein Lieblings-Task-Runner), können Sie Argumente mit Yargs an gulp-karma übergeben und Muster abgleichen, indem Sie die Konfiguration von karma festlegen.
Ein bisschen wie das:
Siehe mein Kern: https://gist.github.com/rimian/0f9b88266a0f63696f21
Jetzt kann ich eine einzelne Spezifikation mit der folgenden Beschreibung ausführen:
Mein lokaler Testlauf: (1 von 14 ausgeführt (13 übersprungen))
Siehe auch: https://github.com/karma-runner/karma-jasmine
quelle
Sie können alle Ihre Ihre Spezifikationen vorne erstellen , aber deaktivieren Sie sie mit
xdescribe
undxit
bis Sie bereit sind , sie zu testen.quelle
Mit dem eigenständigen Jasmine (2.0.0) auf spec_runner.htlm konnte ich auf eine bestimmte Spezifikation klicken und mich auf diese eine Spezifikation konzentrieren. Ich hätte diese Funktion früher bemerken sollen.
quelle
Nicht genau das, wonach Sie gefragt haben, aber das Hinzufügen
iit
testet nur diese bestimmte Spezifikation und ignoriert alle anderen in der Datei. Diesddescribe
funktioniert auf die gleiche Weise. So können Sie sich mitiit
oder auf eine bestimmte Spezifikation konzentrierenddescribe
quelle
Dies ist die einfachste Antwort mit einem praktischen Beispiel. Selbst in fdescribe können Sie nur wenige it-Blöcke damit ausführen. f bedeutet Fokus.
Auch in einem nicht beschriebenen Block, der nur beschrieben wird, können Sie nur bestimmte IT-Blöcke auswählen, indem Sie sie als passend markieren.
Führen Sie den folgenden Code aus und beachten Sie das Konsolenprotokoll. Lesen Sie auch die Kommentare im Code. Lesen Sie den Artikel dieses Autors, es hilft auch. https://davidtang.io/2016/01/03/controlling-which-tests-run-in-jasmine.html
quelle