Wie man leere Platzhalter-tests absichtlich nicht in Mocha?
Schreibe ich eine API in NodeJS und Tests mit Mocha, Chai und-SuperTest. Ich bin mit einem typischen test-driven Ansatz zu schreiben, die ersten tests dann befriedigend, diese tests mit funktionierendem code. Jedoch, da die Anzahl von tests für alle verschiedenen Permutationen, ich habe angefangen zu schreiben, leere Platzhalter-tests, so dass ich alle it('should...')
Beschreibungen in den Ort, um mich daran zu erinnern, was zu testen ist, wenn ich zu diesem feature. Zum Beispiel:
it 'should not retrieve documents without an authorized user', (done) ->
done()
Das problem mit diesem ist, dass done()
genannt wird, ohne jede Behauptung, so ist der test gilt als übergeben, also habe ich noch folgende Behauptung.
false.should.equal true # force failure
aber es ist ein hack und der Grund für den Ausfall, der Mokka zeigt, kann verwirrend erscheinen, vor allem, wenn andere tests möglicherweise zu scheitern.
Gibt es eine offizielle Möglichkeit, um absichtlich scheitern Platzhalter-tests wie diese in Mocha?
should.fail('not yet implemented')
. Vielleicht wickeln, die in Ihrem eigenen Modul/Funktion und nutzen es während Ihres tests. In Chai-Tee, das einzige was ich mir vorstellen kann wäre, wickeln Sie einige Fehler geworfen , aber das würde sich wahrscheinlich ziemlich hässlich.Leider chai - Umsetzung sollten keine
fail()
Methode. Vielleicht könnte ich die Umstellung assertion-Bibliotheken.Ich weiß nicht, ob ich wechseln eigentlichen Bibliotheken. Der Blick durch die docs sehe ich ein fail () - Funktion unter der assert-Sektion . Dies ist tatsächlich eine sehr gute Frage, wie würde ich dies ebenfalls als nützlich 🙂 ich werde versuchen, eine Zusammenfassung und senden eine tatsächliche Antwort in Kürze hier
assert.fail()
wäre wohl eine passende Antwort, da es nicht erforderlich, alle Module zu ändern.InformationsquelleAutor Soviut | 2015-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den offiziellen Weg zu mark-tests als nicht bereit für die Prüfung aber ist die Verwendung
skip
, das ist eine Methode, die erscheint als ein Feld vondescribe
undit
. Hier ist ein Beispiel:Den oben genannten code, wenn man Sie in einem
test.js
- Datei und führen Sie mit$ mocha --reporter=spec test.js
produziert:Den test Namen vorangestellt
-
übersprungen werden. Auch in einem terminal unterstützt Farben der tests, die übersprungen werden, erscheinen in blau (von opposition zu rot für eine fehlgeschlagene tests und grün für die übergabe). Ein mit "überspringen" test "angemeldet", so Mocha gibt die Anzahl der übersprungenen tests als "2 pending".throw new Error("fail");
In diesem Fall, sehe ich keine Möglichkeit innerhalb des Rahmens selbst zu tun. Einige andere Sprachen/frameworks haben diese Funktion (ex: scala hat ??? Platzhalter)upvoting, weil Sie denken, nachdem es, diese ist wahrscheinlich viel besser, da es eindeutig kennzeichnet den test als Platzhalter. Ich würde wahrscheinlich implementieren ein " noch-nicht-ready-Funktion ist wie ich oben für die tatsächliche Umsetzung-code.
Ja, ich habe mich verändert, meine gewählte Antwort (sorry @JustinMaat), da diese technisch gesehen ist das, was ich wollte zu tun und es ist mehr offiziellen.
InformationsquelleAutor
Als der 05/19/2018 dies ist der offizielle Weg: https://mochajs.org/#pending-tests
Eine implementierte test sollte nicht
fail
es sollte gekennzeichnet werden, wiepending
.Eine prägnante Methode der Kennzeichnung eines Mokka-test als
not yet implemented
ist nicht an eine callback-Funktion, dieit
hf.Läuft
mocha test
zeigt Ihr nicht implementierte tests anstehen.Ich weiß die Antwort genehmigt wird gesagt, der "offizielle" Weg, aber ich wirklich wie die Semantik dieses Konzepts, und außerdem ist es schneller bang, die ersten specs.
InformationsquelleAutor
Wenn Sie eine Zeichenfolge übergeben oder Fehler zu
done()
Bericht wird es als ein Fehler. Also:dazu führt, dass der test fehlschlägt mit der Ausgabe:
Ich wie @Canyon-Lösung nur nicht die übergabe einer callback-Funktion an, markieren Sie die tests "pending", aber in meinem Fall möchte ich diese Platzhalter zu Versagen meine CI-builds, so dass Sie die tatsächliche fehlerhafte tests wie dieser war einfacher.
new Error( 'reason' )
Objekt.Dies hilft auch, eine Menge, wenn Sie mit Versprechungen oder Rx Observablen, schlucken keine Fehler geworfen mit
throw
.InformationsquelleAutor
Dies ist eigentlich eine gute Frage, da würde ich auch finden das super hilfreich. Nach einem Blick auf es, ich würde denken, um einfach erstellen Sie Ihre eigenen wrapper "todo" oder "nicht bestanden" - Funktion, die Sie wiederverwenden können während Ihrer gesamten Codebasis.
Beispiele unten verwenden eine Funktion namens todo, die drucken Sie den text "noch nicht implementiert". Dies könnte nützlich sein, als ein separates Modul auch so können Sie importieren und verwenden Sie alle Ihre tests. Müssen möglicherweise ändern Sie den code ein bisschen...
Beispiel in chai behaupten
Beispiel mit chai geltend machen , mit der fail-option (obwohl es sieht unncessary)
.fail()
Methode Hinzugefügt, um alle styles in Chai ich hoffe das wird in Zukunft aktualisiert github.com/chaijs/chai/issues/350Nur um Menschen zu retten einen Klick, sieht aus wie dieser pull-request akzeptiert wurde, eine Weile zurück, so dass Sie verwenden können .fail () - jetzt.
InformationsquelleAutor