Frage

Ich gründe einen Schienen-app und ich habe gerade einige Unit-Tests zu machen und mein Freund sagte, dass offenbar Befestigungen sind nicht mehr kühl und die Leute sind jetzt RSpec oder shoulda verwendet wird. Ich frage mich, was die tatsächlichen Vorteile sind diese Toolkits zu verwenden. Alle Informationen auf allen geschätzt wird.

-fREW

War es hilfreich?

Lösung

RSpec und ähnliches Frameworks Tooling in Behavior Driven Development unterstützen konzipiert. Sie sind nicht nur eine schönere Art und Weise, Tests zu schreiben, obwohl sie helfen mit, dass sie.

Es gibt eine Fülle von Informationen über BDD hier: http://behaviour-driven.org/ Und wikipedia: http://en.wikipedia.org/wiki/Behavior_Driven_Development

Es gibt zu viele Vorteile hier aufzulisten, also würde ich empfehlen, dass vor Ort ein wenig surfen.

Andere Tipps

Ich persönlich Shoulda zu RSpec bevorzugen. Ich finde, dass Shoulda weniger Magie Syntax als RSpec hat. Mein Problem mit RSpec ist, dass ja es ist sehr gut lesbar, wenn ich es laut gelesen, aber wenn ich zu schreiben es bekommen, hmmmm, ich bin nie sicher, wie eine bestimmte Behauptung geschrieben werden soll. Prag Dave erklärt das Problem besser als ich . Er hat auch mag Shoulda und hat ein paar Beispiele .

Es gibt zwei verschiedene Dinge hier:

Das erste, was ist das, was Rahmen für das Schreiben von Tests / Spezifikationen zu verwenden. Hier können Sie zwischen Test :: Einheit wählen, RSpec, Shoulda und so weiter. Die Wahl, ob Sie die von Entwicklern wie David Chemlinsky (RSpec und zu einem gewissen Grad Shoulda).

Die zweite Sache ist, wie Testdaten zu handhaben. Es gibt Rails Armaturen und Alternativen entwarf mit anderen Zielen wie der FixtureReplacement Plugin . Vor Rails hatte 2.0 Armaturen erhebliche und praktische Probleme gut dokumentiert. Viele der praktischen Fragen wurden in Rails 2.0 behoben. Jedoch können Vorrichtungen, um eine versehentliche Prüfkupplung führen und einige der Alternativen versuchen, dies zu vermeiden.

RSpec ist viel leistungsfähiger, da es viel einfacher ist, lesen und schreiben Tests. Es ist auch sehr elegant, wenn Mocks und Stubs verwenden, ein Konzept, das äußerst nützlich sein wird, wenn Sie in Ihren Tests mit ihnen beginnen. Versuchen Sie es in einem einfachen Test app (NON RAILS!) Und Sie werden sehen, wie elegant Ihre Angaben im Vergleich zu dem äquivalenten Standard-Test sind.

Schauen Sie sich Josh Susser The Great-Test Rahmen Tanz-off für einen Vergleich des beliebten Ruby-Test-Frameworks.

Wenn Sie eine große Anwendung erstellen und verfügen nicht über ein Team, das alles wirklich gut sind das Schreiben von Code entkoppelt, die gut getestet werden können, mit Black-Box-Tests und sind bereit, voll umarmen mit / Debugging viele Mocks & Stubs , geht nach unten nicht der Fabrikstraße.

Wo auch immer Sie lesen, wie Super Fabriken sehen Sie eine kleine Einschränkung, wie Fabriken in einer großen Anwendung nicht möglich sein könnte, weil sie ein wenig langsamer als Befestigungen sind.

Aber „etwas langsamer“ ist wirklich um Größenordnungen langsamer.

Fabriken sind nicht wesentlich einfacher Code als Vorrichtungen, die Etiketten für ids verwenden, so lange, wie Sie die Geräte organisiert halten. Und in einigen Fällen Fabriken sind schwerer zu debuggen.

Gerade heute Abend umgewandelt ich eine einzelne Fabrik Armaturen und die Laufzeit der Testdatei, die verwendete es von 65 Sekunden auf 15 Sekunden ging, obwohl nur etwa 15% der Tests in dieser Testdatei, die Fabrik verwendet werden.

Wenn Sie Minitest verwenden, können Sie Ihre Tests in zufälliger Reihenfolge ausgeführt werden; Dies wird schnell jede Datenkopplung zwischen den Tests offenbart. (Nicht sicher, ob rspec hat die Option Prüfauftrag randomisieren)

Test :: Unit ist gut für kleine Anwendungen. Aber es gibt eine Menge Vorteile Test-Frameworks wie Shoulda oder RSpec zu verwenden, z. G. Kontexten !!

Ich sehe Shoulda und RSpec nicht in einer Entweder-oder-Beziehung. Ich benutze Shoulda als Ersatz für RSpec, wenn es um Testeinzelbehauptung kommt. Ich mag wirklich den Shoulda Einzeiler, aber Matcher Schreiben ist viel einfacher, in RSpec. Also mein Rat ist, die verschiedene Test-Tools zu verwenden, wo sie am besten passen.

Sie können Test-Framework wie Gurken verwendet werden, die noch schneller als RSpec ist ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top