Ich sehe nicht, wie man eine testgetriebene Entwicklung in Meteor macht.
Ich sehe es nirgendwo in der Dokumentation oder in den FAQ erwähnt. Ich sehe keine Beispiele oder ähnliches.
Ich sehe, dass einige Pakete Tinytest verwenden.
Ich würde eine Antwort von Entwicklern benötigen, was ist die Roadmap dazu. Etwas in der Art von:
- möglich, keine Dokumentation, finde es selbst heraus
- meteor ist nicht so aufgebaut, dass Sie testbare Apps erstellen können
- Dies ist eine geplante Funktion
- etc
Antworten:
Update 3 : Ab Meteor 1.3 enthält Meteor eine Testanleitung mit schrittweisen Anweisungen für Einheiten-, Integrations-, Akzeptanz- und Lasttests.
Update 2 : Ab dem 9. November 2015 wird Velocity nicht mehr beibehalten . Xolv.io konzentriert seine Bemühungen auf Schimpansen , und die Meteor Development Group muss einen offiziellen Testrahmen auswählen .
Update : Velocity ist ab 0.8.1 die offizielle Testlösung von Meteor .
Zu diesem Zeitpunkt wurde nicht viel über automatisierte Tests mit Meteor geschrieben. Ich erwarte von der Meteor-Community, dass sie Best Practices für Tests weiterentwickelt, bevor sie etwas in der offiziellen Dokumentation festlegt. Immerhin hat Meteor diese Woche 0,5 erreicht, und die Dinge ändern sich immer noch schnell.
Die gute Nachricht: Sie können Node.js Testtools mit Meteor verwenden .
Für mein Meteor-Projekt führe ich meine Unit-Tests mit Mocha durch , wobei ich Chai für Behauptungen verwende. Wenn Sie nicht den vollständigen Funktionsumfang von Chai benötigen, empfehle ich stattdessen die Verwendung von should.js . Ich habe momentan nur Unit-Tests, obwohl Sie auch Integrationstests mit Mocha schreiben können.
Stellen Sie sicher, dass Sie Ihre Tests im Ordner "tests" ablegen, damit Meteor nicht versucht, Ihre Tests auszuführen.
Mocha unterstützt CoffeeScript , meine Skriptsprache für Meteor-Projekte. Hier ist ein Beispiel-Cakefile mit Aufgaben zum Ausführen Ihrer Mokka-Tests. Wenn Sie JS mit Meteor verwenden, können Sie die Befehle für ein Makefile anpassen.
Ihre Meteor-Modelle müssen geringfügig modifiziert werden, um sich Mocha auszusetzen. Dies erfordert einige Kenntnisse über die Funktionsweise von Node.js. Stellen Sie sich jede Node.js-Datei als in ihrem eigenen Bereich ausgeführt vor. Meteor stellt Objekte in verschiedenen Dateien automatisch einander zur Verfügung, gewöhnliche Knotenanwendungen wie Mocha tun dies jedoch nicht. Exportieren Sie jedes Meteor-Modell mit dem folgenden CoffeeScript-Muster, um unsere Modelle mit Mocha testbar zu machen :
... und importieren Sie oben in Ihrem Mokka-Test das Modell, das Sie testen möchten:
Damit können Sie mit Ihrem Meteor-Projekt Unit-Tests schreiben und ausführen!
quelle
Meteor.whatever
Funktionen verwendet. Ich bekomme Meteor ist undefiniert Fehler. Gibt es eine Möglichkeit, Meteor explizit zu verpflichten, dies zu umgehen?Meteor
Objekt nicht zugänglich, ebenso wie alle Modellabhängigkeiten, die von Meteor verfügbar gemacht werden. Um diesen Prozess zu verbessern, müssen Sie die Anwendungsumgebung in Mocha instanziieren und dasMeteor
Objekt Ihren Tests aussetzen . Ich werde diese Antwort auf jeden Fall aktualisieren, sobald ich eine vollständigere Testlösung eingerichtet habe. In der Zwischenzeit können Sie mich gerne bei Fragen oder Verbesserungsvorschlägen kontaktieren.Hallo all checkout laika - das ganz neue Test-Framework für Meteor http://arunoda.github.io/laika/
Sie können sowohl den Server als auch den Client gleichzeitig testen.
Haftungsausschluss: Ich bin der Autor von Laika.
quelle
Mir ist klar, dass diese Frage bereits beantwortet ist, aber ich denke, dass dies einen weiteren Kontext in Form einer zusätzlichen Antwort in diesem Kontext gebrauchen könnte.
Ich habe einige App-Entwicklungen mit Meteor sowie Paketentwicklungen durchgeführt, indem ich sowohl ein Paket für den Meteor-Kern als auch für die Atmosphäre implementiert habe .
Es hört sich so an, als ob Ihre Frage tatsächlich aus drei Teilen besteht:
Und es klingt auch so, als ob irgendwo eine Bonusfrage drin sein könnte: 4. Wie kann man eine kontinuierliche Integration für 1, 2 und 3 implementieren?
Ich habe mit Naomi Seyfer (@sixolet) im Meteor- Kernteam gesprochen und begonnen , um endgültige Antworten auf all diese Fragen in die Dokumentation aufzunehmen.
Ich hatte eine erste Pull-Anfrage mit den Adressen 1 und 2 an den Meteorkern gesendet: https://github.com/meteor/meteor/pull/573 .
Ich hatte kürzlich auch diese Frage beantwortet: Wie führen Sie die Meteortests durch?
Ich denke, dass @Blackcoat oben 3 definitiv beantwortet hat.
Was den Bonus 4 betrifft , würde ich vorschlagen, zumindest circleci.com zu verwenden, um eine kontinuierliche Integration für Ihre eigenen Apps durchzuführen . Sie unterstützen derzeit den von @Blackcoat beschriebenen Anwendungsfall. Ich habe ein Projekt, in dem ich erfolgreich Tests in Coffeescript geschrieben habe, um Unit-Tests mit Mokka durchzuführen, so wie es @Blackcoat beschrieben hatte.
Naomi Seyfer und ich unterhalten uns mit dem Gründer von circleci, um zu sehen, ob wir in naher Zukunft etwas Fantastisches implementieren können, um eine kontinuierliche Integration in den Meteor-Kern und intelligente Pakete zu erreichen.
quelle
RTD wurde jetzt veraltet und durch Velocity ersetzt, das offizielle Test-Framework für Meteor 1.0. Die Dokumentation ist noch relativ neu, da sich Velocity in einer starken Entwicklung befindet. Weitere Informationen finden Sie im Velocity Github Repo , auf der Velocity Homepage und im Meteor Testing Manual (kostenpflichtige Inhalte).
Haftungsausschluss: Ich bin eines der Mitglieder des Kernteams von Velocity und der Autor des Buches.
Check out RTD, einen vollständigen Test - Framework für Meteor hier rtd.xolv.io . Es unterstützt Jasmine / Mocha / custom und funktioniert sowohl mit einfachem JS als auch mit Kaffee. Es enthält auch eine Testabdeckung, die die Abdeckung von Einheiten / Servern / Clients kombiniert.
Und ein Beispielprojekt hier
Ein Blog, in dem Unit-Tests mit Meteor hier erklärt werden
Ein e2e-Akzeptanztestansatz mit Selenium WebdriverJS und Meteor hier
Hoffentlich hilft das. Haftungsausschluss: Ich bin der Autor von RTD.
quelle
Ich habe diese Seite oft benutzt und alle Antworten ausprobiert, aber vom Ausgangspunkt meines Anfängers an fand ich sie ziemlich verwirrend. Sobald ich irgendwelche Probleme hatte, war ich verblüfft, wie ich sie beheben sollte.
Diese Lösung ist sehr einfach zu starten, wenn sie noch nicht vollständig dokumentiert ist. Ich empfehle sie daher Leuten wie mir, die TDD ausführen möchten, sich aber nicht sicher sind, wie das Testen in JavaScript funktioniert und welche Bibliotheken in welche integriert werden:
https://github.com/mad-eye/meteor-mocha-web
Zu Ihrer Information, ich habe festgestellt, dass ich auch das Router-Atmosphere-Paket verwenden muss , um eine '/ tests'-Route zum Ausführen und Anzeigen der Testergebnisse zu erstellen , da ich nicht wollte, dass meine App bei jedem Laden überladen wird.
quelle
meteor-mocha-web
mitmocha-phantomjs
zur Automatisierung von Tests und für CI verwenden. Es ist das, was wir verwenden. Vollständige Offenlegung - Ich bin einer der Betreuer vonmeteor-mocha-web
.Informationen zur Verwendung von Tinytest finden Sie in den folgenden nützlichen Ressourcen:
Die Grundlagen werden in diesem Screencast erläutert: https://www.eventedmind.com/feed/meteor-testing-packages-with-tinytest
Sobald Sie die Idee verstanden haben, möchten Sie die öffentliche API-Dokumentation für
tinytest
. Die einzige Dokumentation dafür befindet sich derzeit am Ende der Quelle destinytest
Pakets: https://github.com/meteor/meteor/tree/devel/packages/tinytestIn dem Screencast wird auch darüber gesprochen, ob
test-helpers
Sie sich hier alle verfügbaren Helfer ansehen möchten: https://github.com/meteor/meteor/tree/devel/packages/test-helpers In jedem befindet sich häufig eine Dokumentation DateiDas Eingraben in die vorhandenen Tests von Meteor-Paketen wird viele Beispiele liefern. Eine Möglichkeit, dies zu tun, besteht darin, nach
Tinytest.
odertest.
im Paketverzeichnis des Meteor-Quellcodes zu suchenquelle
Das Testen wird in der kommenden Version 1.3 zu einem zentralen Bestandteil von Meteor. Die ursprüngliche Lösung basiert auf Mokka und Chai.
Die ursprünglichen Diskussionen über das minimal realisierbare Design finden Sie hier und die Details der ersten Implementierung finden Sie hier .
MDG hat die ersten Knochen der Leitfaden-Dokumentation für die Tests erstellt, die hier zu finden sind. Hier finden Sie einige Beispieltests .
Dies ist ein Beispiel für einen Veröffentlichungstest über den obigen Link:
quelle
Ich mache Funktions- / Integrationstests mit Meteor + Mocha im Browser. Ich habe etwas in der Art von Folgendem (in Kaffeeskript zur besseren Lesbarkeit):
Auf dem Client ...
... und auf dem Server:
Natürlich können Sie Ihre clientseitigen Unit- Tests auf die gleiche Weise durchführen. Für Integrationstests ist es jedoch schön, die gesamte Meteor-Infrastruktur zur Verfügung zu haben.
quelle
Wie Blackcout sagte, ist Velocity das offizielle TDD-Framework für Meteor. Derzeit bietet die Webseite von Velocity jedoch keine gute Dokumentation. Deshalb empfehle ich Ihnen zu sehen:
quelle
Eine weitere Option, die seit 0.6.0 leicht verfügbar ist, besteht darin, Ihre gesamte App aus lokalen Smart-Paketen mit einer minimalen Menge an Code außerhalb der Pakete auszuführen, um Ihre App zu starten (möglicherweise wird ein bestimmtes Smart-Paket aufgerufen, das die Grundlage Ihrer App bildet App).
Sie können dann Meteors Tinytest nutzen, der sich hervorragend zum Testen von Meteor-Apps eignet.
quelle
Ich habe xolvio: Gurke und Geschwindigkeit erfolgreich verwendet, um meine Tests durchzuführen. Funktioniert sehr gut und läuft kontinuierlich, sodass Sie immer sehen können, dass Ihre Tests bestanden werden.
quelle
Meteor + TheIntern
Irgendwie habe ich es geschafft, die Meteor-Anwendung mit TheIntern.js zu testen.
Obwohl es meinen Bedürfnissen entspricht. Trotzdem denke ich, dass dies jemanden in die richtige Richtung führen kann, und ich teile mit, was ich getan habe, um dieses Problem zu lösen.
Es gibt eine
execute
Funktion, mit der wir JS-Code ausführen können, über den wir auf das Browserobjektwindow
und damitMeteor
auch zugreifen können .Möchten Sie mehr über die Ausführung erfahren ?
So suche ich
test suite
nach FunktionstestsUm mehr zu wissen, ist dies mein Kern
Hinweis: Ich bin mit dieser Lösung noch in einer sehr frühen Phase. Ich weiß nicht, ob ich damit komplexe Tests durchführen kann oder nicht. Aber ich bin ziemlich zuversichtlich.
quelle
Die Geschwindigkeit ist noch nicht ausgereift. Ich habe Probleme mit setTimeout, um die Geschwindigkeit zu verwenden. Für serverseitige Unit-Tests können Sie dieses Paket verwenden .
Es ist schneller als die Geschwindigkeit. Die Geschwindigkeit benötigt viel Zeit, wenn ich eine Spezifikation mit einem Login teste. Mit Jasmine-Code können wir jede serverseitige Methode und Veröffentlichung testen.
quelle