Denken Sie an Gurke als gesamte Anwendung zu testen, von außen nach innen, wo RSpec ist Unit-Tests von spezifischen Modulen. Sie beginnen damit, dass Sie angeben, welche Verhaltensweisen Ihre Anwendung in Cucumber haben soll, und geben Sie dann in RSpec an und beschreiben Sie die Klassen und Module, die dieses Verhalten ermöglichen.
Es hat eine Weile gedauert, bis ich es bekommen habe, aber ich finde, dass Cucumber wirklich gut ist, um allgemein zu beschreiben, welche Funktionen deine Anwendung haben soll und RSpec ist wirklich gut darin zu beschreiben, wie es das eigentlich machen soll.
Also würden Sie in Ihren Gurkengeschichten sagen, welche Art von Funktion Sie wollen und super einfache Schritte schreiben, um Input zu liefern und die Ausgabe zu betrachten. Dann fahren Sie mit RSpec fort und schreiben Spezifikationen, wie es das eigentlich machen soll.
Angenommen, Sie können nach Benutzernamen auf einer Website suchen.Sie könnten eine Gurke-Funktion und die erste (und nur die erste) Szenario wie folgt schreiben:
Feature: Search users
In order to find people with similar interests as myself
As a user
I want to search for people
Scenario: Search for similar hobbies
Given there is a search page
And there is a list of hobbies
And one of the hobbies is "full contact ironing"
When I select "full contact ironing"
And press search
Then a list of users with the hobby "full contact ironing" are shown
Sie führen Gurke, es sagt Ihnen, die Schritte Sie fehlt, kopieren Sie diese und die einfachen Schritten erstellen zu überprüfen für dieses Zeug, aber schreibe noch keinen Code.
Wenn Sie mit Ihren Schrittdefinitionen fertig sind, wechseln Sie zu RSpec und beginnen Sie mit der Erstellung von Spezifikationen, wie dies funktioniert. (Gurke sollte natürlich sein Versagen)
describe "SearchController" do
it "should respond to searches" do
sc = SearchController.new
sc.should respond_to(:search)
end
end
Sie RSpec laufen und beobachten Sie es dann nicht gehen und schreiben Sie Ihren Code:
class SearchController
def search
end
end
Das ist es. Führen Sie den Test jetzt erneut aus. Es sollte passieren, also beginnen Sie genauer zu werden und beginnen Sie zu beschreiben, wie Sie die Suchfunktion tatsächlich verwenden werden. Ich wollte nicht zu sehr darauf eingehen. Ich wollte Ihnen nur die Idee geben, dass Sie beschreiben, was Sie in Cucumber wollen, und dann beschreiben, wie es in RSpec funktionieren soll.
Natürlich können Sie alles in Cucumber oder alles in RSpec tun, aber ich habe wirklich gefunden Gurke hilft mir auf sehr einfache Weise sagen, was ich will, wenn ich versuche, in RSpec zu tun, bin ich in den Details stecken. Wenn ich zuerst Cucumber benutze, um das grundlegende Feature zu beschreiben, das ich möchte, und warum, dann kann ich in RSpec hineingehen und sagen, wie ich das Feature wirklich funktionieren lassen möchte.
Manchmal wird es Doppelungen in Ihren Tests geben, die nicht sehr TROCKEN sind, aber wenn Sie es als Detaillierungsgrad betrachten, stört es Sie vielleicht nicht so sehr. Ich machte eine Menge Doppelarbeit, bis ich merkte, dass ich generell sagen sollte, was ich in Gurke will und dann genau das sage, was ich in RSpec will.
Das ist alles nur eine Neueinsteiger Idee, wie man die Werkzeuge benutzt, aber es scheint, für mich bis jetzt gut zu arbeiten. Ich habe dir wahrscheinlich ein schreckliches Beispiel gegeben, aber ich versuche nur, die allgemeinen Details zu bestimmten Details zu bringen, die ich bei der Verwendung der Tools als nützlich empfunden habe.
Ich stimme völlig zu, das war meine Erfahrung auch. –