2012-08-29 4 views
5

Ich verwende mocha, um meine node.js-Anwendung zu testen.Wie organisiere ich meine Spezifikationsdateien?

Ich merke, dass meine Spezifikationsdateien mit der Zeit immer größer werden. Gibt es ein Muster zum Organisieren der Testdateien (z. B. eine Specs-Datei pro Test)? Oder gibt es noch andere Frameworks auf dem Mocha, die mir helfen, die Tests zu strukturieren? Oder bevorzugen Sie andere Test-Frameworks aus diesem Grund?

Antwort

1

Große Test-/Spezifikationsdateien neigen dazu, zu bedeuten, dass der getestete Code zu viel tut. Dies ist jedoch nicht immer der Fall, oft wird Ihr Testcode den getesteten Code immer auswiegen, aber wenn Sie Schwierigkeiten damit haben, kann dies ein Zeichen sein.

Ich neige dazu, Tests auf Funktionalität zu gruppieren. Stellen Sie sich vor, wenn wir example.js haben, würde ich erwarten, dass example.tests.js mit beginnen.

Anstatt einer Spezifikation namens ExampleSpec neigen ich dazu, viele Spezifikationen/Tests basierend auf verschiedenen Kontexten zu haben. Zum Beispiel könnte ich EmptyExample, ErrorExample und DefaultExample haben, die unterschiedliche Voraussetzungen haben. Wenn diese zu groß werden, fehlen entweder Abstraktionen oder Sie sollten darüber nachdenken, die Dateien zu trennen. So könnte man mit einer Verzeichnisstruktur am Ende wie:

 
    specs/ 
     Example/ 
      EmptyExample.js 
      ErrorExample.js 
      DefaultExample.js 

Zunächst aber ein Test/Spec-Datei pro Produktionsdatei der Ausgangspunkt sein sollte. Nur trennen, wenn es notwendig ist.

+0

dann wie kann ich es ausführen? Ich würde gerne "mocha testAll.js". testAll.js enthält alle Untertests. Wie erreiche ich das? –

+0

Ich habe die gleiche Frage, wie man Untertests einschließt. Bis jetzt sieht es so aus, als müssten Sie Mocha benötigen und es programmatisch verwenden, um andere Tests zu integrieren, ohne die Dinge zu stören. Entweder das oder verwenden Sie --recursive in der Befehlszeile, um alle Dateien abzurufen. –

+0

@ NicolasS.Xu wirklich späte Antwort, aber alle Ihre Angaben könnten (sollten?) Commonjs Module, die Sie benötigen in eine Unterordner-Ebene 'index.js', die tatsächlich Ihre Angaben aufruft. Es funktioniert gut in Verbindung mit Npm-Skripten. –

Verwandte Themen