rspec
ist ein umfassendes Testframework, mit dem Sie schreiben können, was Rails Komponententests, Funktionstests und Integrationstests beschreibt. Alle diese üben Ruby-Code durch verschiedene Schichten Ihrer Rails-Anwendung aus. Alle diese Tests simulieren Anforderungen an Ihre Rails-Anwendung, führen die Anwendung jedoch nicht Ende-zu-Ende über das Netzwerk aus.
cucumber
ist ein browserbasiertes Integrationstest-Framework, mit dem automatisierte Tests geschrieben werden können, die gegen die gesamte Rails-Anwendung laufen, auf die über einen automatisierten Webbrowser zugegriffen wird. Auf diese Weise können Sie automatisierte Tests zu In-Browser-Verhalten für JS oder CSS schreiben. Cucumber bietet einen einzigartigen Blickwinkel auf Integrationstests, bei denen die einfache englische Spezifikation dem Code über reguläre Ausdrücke zugeordnet wird. Dies ermöglicht ein natürlicheres "Behavior Driven Development" -Modell, das beschreibt, was eine Web-Anwendung in einfacher Sprache aus der Sicht des Benutzers tun sollte.
capybara
ist ein spezieller Webtreiber, der das Integrationstestframework cucumber
ansteuert, das headless webkit verwendet. Auf diese Weise kann ein Chrome/Webkit-Browser ohne Benutzeroberfläche für automatisierte Tests ausgeführt werden. Dies ist sowohl in der Entwicklung als auch auf einem Remote-Test-/Continuous-Integration-Server sehr nützlich.
So rspec
und cucumber
sind ähnlich in der Angabe Dinge Test-Frameworks mit ihrem eigenen Weg zu sein. rspec
hat eine nette DSL, die sehr lesbar ist, während sie tatsächlich Code ist. cucumber
mappt Klartextbeschreibungen zu echtem Code.
Obwohl cucumber
normalerweise oben auf Capybara verwendet wird, können Sie auch rspec
verwenden, um capybara
Integrationstests durchzuführen. Die Tests werden entweder in rspec oder gurke geschrieben, aber capybara
ist eine Integrationsengine darunter.