Ich habe 6 Monate Erfahrung in der Entwicklung von Rails. Ich habe eine Webanwendung erstellt, die jetzt mit Authentifizierung und Autorisierung und postgresql db verwendet wird.
Ich gehe zu meiner zweiten Rails-Anwendung über, aber dieses Mal möchte ich sie nach den gewonnenen Erkenntnissen mit TDD entwickeln, da mir aufgefallen ist, dass es viel einfacher ist, sie zu skalieren und Fehler zu beheben. Es entwickelt sich nur langsam, ist aber auf lange Sicht viel einfacher zu handhaben.
Ich habe von Rspec und Cucumber gehört, bin aber von ihnen völlig verwirrt.
Ich würde gerne wissen, was der Unterschied zwischen RSpec und Cucumber ist und wofür sie verwendet werden.
Es wäre auch nützlich zu wissen, ob aus der Sicht eines Anfängers (der auch der einzige Entwickler ist), ob ein Testframework wirklich benötigt wird.
Antworten:
RSpec und Cucumber sind beide Test-Frameworks. RSpec umfasst herkömmliche Unit-Tests (dh das Testen einer Klasse oder eines Teils der Anwendung isoliert vom Rest der Anwendung. Ihr Modell macht also das, was Ihr Modell tun soll, der Controller macht das, was es tun soll usw.).
RSpec und Cucumber werden beide für Abnahmetests verwendet (dies wird als ATDD, BDD, Spezifikation anhand eines Beispiels usw. bezeichnet, je nachdem, wen Sie fragen). Hierbei handelt es sich um Business-Case-gesteuerte Integrationstests. Dies bedeutet, dass sie die Art und Weise simulieren, wie ein Benutzer die Anwendung verwendet und den gesamten Rails-Stapel verwendet, sodass Probleme mit der Art und Weise, wie die verschiedenen Teile Ihrer Anwendung zusammenarbeiten, auf eine Weise gefunden werden können, die beim Testen von Einheiten nicht der Fall ist finden.
Der Hauptunterschied zwischen RSpec und Cucumber ist der Geschäftslesbarkeitsfaktor. Die Hauptattraktion von Cucumber besteht darin, dass die Spezifikation (Merkmale) vom Testcode getrennt sind, sodass Ihre Produktbesitzer die Spezifikation bereitstellen oder überprüfen können, ohne den Code durchforsten zu müssen. Dies sind die .feature-Dateien, die Sie in Cucumber erstellen. RSpec verfügt über einen ähnlichen Mechanismus. Stattdessen beschreiben Sie einen Schritt mit einem Describe-, Context- oder It-Block, der die Geschäftsspezifikation enthält, und verfügen dann sofort über den Code, der diese Anweisung ausführt. Dieser Ansatz ist für Entwickler etwas einfacher zu bearbeiten, für nicht-technische Leute jedoch etwas schwieriger.
Welche verwenden? Wenn Sie der einzige Entwickler und Produktbesitzer sind, würde ich mich an RSpec halten. Ich bin der Meinung, dass es für einen Techniker einfacher ist, dies zu verstehen, bietet einige Vorteile, wenn es darum geht, den Umfang und die Kontrolle zu behalten, und verhindert, dass Sie sich mit RegExs für Tests herumschlagen Schritte. Wenn Sie dies für einen Kunden erstellen und dieser in Bezug auf die Spezifikation praktisch ist, wählen Sie Cucumber für Ihren Abnahmetest und verwenden Sie RSpec für Unit-Tests.
Nur um den Hauptunterschied zwischen den beiden zu demonstrieren:
Gurke:
Rspec
Diese Blog- Serie eignet sich hervorragend für den Einstieg in RSpec.
quelle