445 Stimmen

Wie führt man einen einzelnen Test mit Mocha aus?

Ich benutze Mocha, um meine JavaScript-Sachen zu testen. Meine Testdatei enthält 5 Tests. Ist es möglich, einen bestimmten Test (oder eine Gruppe von Tests) auszuführen, anstatt alle Tests in der Datei?

36voto

Jitendra Pawar Punkte 1139

Es gibt mehrere Möglichkeiten, wie Sie dies tun können.

  • Wenn Sie einfach nur einen Test aus Ihrer gesamten Liste von Testfällen ausführen möchten, können Sie nur vor Ihrem Testfall schreiben.

    it.only('', function() {
      // ...
    });

    oder Sie können auch das Mocha-Grep-Kommando wie folgt ausführen

    mocha -g 
  • Wenn Sie alle Testfälle ausführen möchten, die sich in einem describe-Abschnitt befinden, können Sie auch only für describe schreiben.

    describe.only('', function() {
      // ...
    });
  • Wenn Sie mehrere Testdateien haben und nur eine davon ausführen möchten, können Sie folgenden Befehl verwenden.

    npm test 

    z.B. :

    npm test test/api/controllers/test.js

    hier ist 'test/api/controllers/test.js' der Dateipfad.

1 Stimmen

Die Syntax it.only() ist wirklich raffiniert, besonders wenn Sie nicht Ihre package.json ändern möchten (d.h., wenn der Unit-Test-Runner unter "scripts" als Alias-Eintrag steht) jedes Mal, wenn Sie den Testfall ändern möchten. mehr Kontext: medium.com/@cnadeau_/…

17voto

Bikesh M Punkte 7671

Sie können "it.only" ausprobieren

it.only('Test eins ', () => {

    expect(x).to.equal(y);
});

it('Test zwei ', () => {

    expect(x).to.equal(y);
});

in diesem wird nur der erste ausgeführt

2 Stimmen

Gefährlich, wenn Tests auf dem CI / Build-Server nicht mit --forbid-only ausgeführt werden. .only hat die Tendenz, in den Hauptzweig zu gelangen und die anderen Tests stummzuschalten, da sie einfach nicht mehr ausgeführt werden. Ich kam zu der Überlegung, dass der Workflow, Code zu ändern, um verschiedene Tests auszuführen, ein Anti-Feature ist. Der Test-Runner sollte bestimmen, welche Tests ausgeführt werden sollen (auch als markierte Tests bezeichnet), nicht der Entwickler.

0 Stimmen

Ich habe dies verwendet, um eine Funktionalität in meinem lokalen Testen zu testen. Hinweis: Bitte it.only nicht im Repository committen.

11voto

Ruthra Punkte 1633

Hallo, die obigen Lösungen haben bei mir nicht funktioniert. Der andere Weg, um einen einzelnen Test auszuführen, ist

mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'

Dies hilft, einen Testfall aus einer einzigen Datei und mit einem bestimmten Namen auszuführen.

2 Stimmen

Verwenden Sie einen Ausdruck, der selektiv genug für -g ist, und Sie müssen keinen Dateinamen angeben. Wenn Sie keinen Ausdruck schreiben können, der selektiv genug ist, bedeutet das, dass Sie Ihre Tests nicht richtig benennen.

9voto

Dave Punkte 191

Beim Blick in das Dokument sehen wir, dass einfach:

mocha test/myfile

funktioniert. Sie können das '.js' am Ende weglassen.

5voto

Unter Verwendung von Mocha's --fgrep (oder einfach -f) können Tests ausgewählt werden, die einen bestimmten String enthalten, zum Beispiel:

mocha -f 'mein Test x'

wird alle Tests ausführen, die mein Test x in it(), describe() oder context() Blöcken enthalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X