Was ist eine Liste von Kriterien für die Auswahl eines Testframeworks?
1) Syntax
Wenn Sie verschiedene Test-Frameworks untersuchen, werden Sie feststellen, dass die Syntax ein Differenzierungsfaktor für alle ist. Dies hängt wirklich davon ab, wie Sie sich wohl fühlen.
Beispielsweise ist qUnit eher ein deklaratives Testframework . Die API besteht aus Funktionen namens test, equals, strictEqual, deepEqual usw.
Ein anderes Test-Framework, Mokka , ähnelt eher rspec, da es eine satzähnlichere Struktur enthält. Seine API besteht aus Funktionen namens "beschreiben", "it", "assert.equal" usw.
Meine persönliche Präferenz ist eine Qunit-ähnliche Struktur.
2) Funktionen - Stubs, Spione, gefälschter Server, gefälschte Uhr usw.
Wenn Sie mit dem Testen in Javascript beginnen, befinden Sie sich schnell in Situationen, in denen Sie Ihr Testframework benötigen, um bestimmte Anwendungsfälle testen zu können. Zum Beispiel:
Spione - Auf diese Weise können Sie feststellen, ob Ihr Code eine Funktion aufgerufen hat, wenn dies der Fall sein sollte
Stubs - Sehr ähnlich zu einem Spion, außer dass er vordefiniertes Verhalten enthält (Beispiel: Wenn der Stub aufgerufen wird, geben Sie foo zurück)
Gefälschter Server - Wenn Ihr Code AJAX-Aufrufe ausgibt und Sie die Antwort des AJAX-Aufrufs vortäuschen möchten, hilft Ihnen ein gefälschter Server beim Testen.
Gefälschte Uhr - Wenn Ihr Code je nach Datum oder Uhrzeit unterschiedlich reagiert, können Sie mit einer gefälschten Uhr genau steuern, wie spät es ist, während Ihr Test ausgeführt wird.
Meine Empfehlung für ein Javascript Framework, das alle oben genannten Funktionen unterstützt, lautet Sinon.JS . Da ich eine Qunit wie Syntax und Framework mag, verwende ich qunit AND Sinon.JS. qunit behandelt meine Behauptungen und führt meine Tests durch. Sinon.JS gibt mir die Möglichkeit, zu fälschen, auszuspionieren, einen gefälschten Server zu betreiben und die Uhr zu fälschen.
3) Community-Unterstützung
Wird Ihr Testframework von der Community unterstützt? Beispielsweise unterstützt grunt (ein Build-Umgebungstool) die Ausführung von qunit auf einem kopflosen PhantomJS-Server: https://github.com/gruntjs/grunt-contrib-qunit . Dies macht es einfach, Tests zu schreiben und sie jedes Mal automatisch ausführen zu lassen, wenn ich die Testdatei speichere.
Ist es praktisch, sie alle auszuprobieren?
Nein, es ist nicht praktisch. Untersuchen Sie stattdessen die Website jedes Frameworks und wählen Sie eine aus, mit der Sie sich wohl fühlen und die Sie auch bei Ihren Schreibtests unterstützt.
Verbringen Sie viel Zeit damit, Foren / usw. darüber zu lesen, wie sie verwendet werden?
Holen Sie sich ein Buch über das von Ihnen ausgewählte Framework und blättern Sie es nach Bedarf durch.