2011-11-29 11 views
25

Chcę rozpocząć nurkowanie w BDD. Nigdy wcześniej nie używałem TDD i jestem nie wiem, czy powinienem zacząć od nauki RSpec, a następnie przeskoczyć do Ogórka lub po prostu przejść od razu do ogórka.Ogórek vs. RSpec

Czytałem w Internecie o obu i wydaje mi się, że ogórek może być "zamiennikiem" dla RSpec. Mam rację lub powinienem być używany do pewnych rzeczy, a drugi do innych?

+0

http://stackoverflow.com/questions/393622/rspec-vs-cucumber-rspec-stories –

Odpowiedz

7

Tak, ogórek i rspec są używane w przypadku BDD.

Ja osobiście wolę Ogórek, ale niektórzy uważają go za niezgodny, a preferują ich testy są mniej angielskie, więcej kodu. Oba są świetnymi narzędziami.

70

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.

+0

+1 za link do artykułu, który należy przeczytać. –

3

Kenton wykonał świetną robotę z tą odpowiedzią.Oto w jaki sposób autorzy RSpec i Cucumber zobaczyć go:

Używamy Ogórek opisać zachowanie aplikacji i używać RSpec do opisania zachowania obiektów.

Chociaż używamy Ogórek skupić się na zachowaniu wysokiego poziomu i używać RSpec skupić się na bardziej precyzyjną zachowanie, każdy może być używane zarówno celu.