Ogórki i RSPec są używane w przypadku BDD, ale mają różne zastosowania.
Pomyśl o ogórku jako opisującym to, co dzieje się z perspektywy użytkownika, poprzez interakcję z przeglądarką internetową. Możesz więc wykonać następujące czynności:
Given I'm not logged in
When I login
Then I should be on the user dashboard page
Dość szeroki, ale pod maską dzieje się dużo. Ogórek jest dobry do upewnienia się, że wszystkie tego rodzaju funkcje i funkcje wysokiego poziomu są objęte (np. Że kiedy użytkownik się zaloguje, zostaną przeniesieni na właściwą stronę). Ale nie jest to dobre narzędzie do testowania kodu niższego poziomu. Tutaj pojawia się RSpec.
Weź powyższy przykład logowania. Twój użytkownik może logować się za pomocą adresu e-mail lub nazwy użytkownika. Prawdopodobnie chcesz upewnić się, że adres e-mail jest prawidłowy lub że nazwa użytkownika ma określoną długość ... lub że rzeczy, których używają do logowania, są niepowtarzalne. Zrobiłbyś to w swoim Modelu użytkownika z walidacją.
To trywialny przykład, ale to jest coś, co testowałbyś używając RSpec (w pliku spec/models/user_spec.rb). To jest , a nie coś, co testowałbyś używając Ogórek.
Więc dolnej linii jest:
Ogórek dla badań wyższego poziomu opisujących szeroką funkcjonalność, patrząc z perspektywy użytkownika
RSpec do testów niższego szczebla opisujących szczegóły na jak swoich klas, metod, modeli, kontroler , itp. powinny faktycznie działać.
Ten post faktycznie robi naprawdę dobrą robotę wyjaśniając gdy przejście z jednego narzędzia do drugiego:
http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/
Polecam również „The RSpec Book” i „Rails Test Prescriptions” dla dobrych zasobów na obu narzędzi i testów ogólnie.
P.S. - Nie mylić rzeczy, ale w rzeczywistości możesz używać RSpec do rzeczy na wysokim poziomie. Ale część z tych decyzji zależy od tego, które narzędzie preferujesz, a może od tego, czy pracujesz z nietechnicznym klientem, który skorzystałby bardziej z przyjaznej dla użytkownika składni Cucumber do opisywania scenariuszy.
http://stackoverflow.com/questions/393622/rspec-vs-cucumber-rspec-stories –