Sortieren von.
Es ist eine Möglichkeit, Tests zu organisieren, aber es ist mehr als das. Es verhält sich wie die originalen Rails-Integrationstests, ist aber viel einfacher zu benutzen. Der große Gewinn hier ist, dass Ihre Sitzung transparent über die gesamte Scenario
gehalten wird.
Eine andere Sache, die mit Gurke passiert, ist, dass Sie aus der Sicht eines Browsers oder Clients mit Ihrem Code testen sollen. Wenn Sie möchten, können Sie Schritte verwenden, um Objekte zu erstellen und den Status einzurichten, aber normalerweise möchten Sie, dass Ihre Schritte die Bewegungen durchlaufen, die erforderlich sind, um diesen Status überhaupt zu erreichen.
Zum Beispiel Sie könnte dies tun:
Given /I have a user account/ do
@user = Factory.create(:user)
# ... more user set up
end
Aber man sollte wohl so etwas tun, statt:
Given /I have a user account/ do
visit new_user_url
fill_in "user_login", :with => "some name"
fill_in "user_password", :with => "foo"
# ... whatever else your sign up page needs
end
Und natürlich können Sie in Argumente zu einem dieser Schritte passieren Geben Sie Ihrem Anrufcode eine feinere Kontrolle über das Verhalten des Schritts.
Was ich im Allgemeinen mit meinen Tests gemacht habe, ist wie folgt.
- Ich benutze shofa, aber rspec ist auch in Ordnung.
- Ich schreibe meine Negativ-Auth-Tests (d. H. Zugriff verweigert wird erwartet) als Rails-Funktionstests.
- Ich schreibe meine Positiv-Auth-Tests (d. H. Benutzer, die tun, was sie tun sollen) als Gurken-Features.
Und natürlich habe ich noch Rails Unit-Tests für meine Modelle, Bibliotheken, Helfer usw.
Ich stimme nicht zu, dass das "sollte" Beispiel ist besser als das "könnte" Beispiel. Der allgemeine Konsens ist, dass es völlig in Ordnung ist, Fabriken in vorgegebenen Schritten zu verwenden, um Vorbedingungen für das zu schaffen, was tatsächlich in Schritten getestet wird. –
Sicher. Ich benutze auch Fabriken in einigen meiner Schritte. Es ist ein angemessenes Maß an Subjektivität beteiligt. Ich habe versucht, auf den allgemeinen Zweck von Cucumber hinzuweisen (das Fahren Ihrer Software als Benutzer). Ich habe nicht versucht, einen einzigen Weg zu beschreiben, alle Schritte zu schreiben. – jdl