2009-10-19 6 views
7

Dla nowej aplikacji chcę rozpocząć dabbling w BDD i staram się zdecydować między używaniem RSPec lub Thoughtbot's Shoulda. Podobają mi się makra, z których korzysta Shoulda, i fakt, że nie wydaje się, że to Ruby/Rails ma nowy sposób na testowanie, ale po prostu dostarcza dodatek. Z drugiej strony, makra wydają się trochę za dużo "magią", zamiast być jednoznacznym o tym, co testujesz (jednak wiem z tego, że irytujące jest napisanie tuzina "nieważnych bez xxx" dwu-liniowych na wzór). Szczerze mówiąc, stwierdzam, że pisanie specyfikacji/testów dla modeli jest trywialne i niemal nudne, ale uważam, że pisanie ich dla kontrolerów jest szalenie trudne, ponieważ nigdy nie jestem pewien, co dokładnie powinienem testować lub jak to napisać.BDD on Rails - Czy społeczność jest bardziej odpowiedzialna za Shoulda czy RSpec?

Nie podoba mi się kpina i upieranie się, ponieważ myślę, że dają fałszywe przypuszczenia (skoro możesz po prostu powiedzieć, że ma jakiekolwiek dane, których potrzebujesz, lub udawać, że nazywa się Metodę X) i ja wiem że RSpec intensywnie korzysta z nich obu. Podoba mi się dokumentacja, którą produkuje RSPec, ale tworzę aplikację na sprzedaż, a nie daję klientowi, więc ładna dokumentacja nie jest przydatna. Lubię Ogórek, ale wygląda na to, że jestem przesadny (i tak, wiem, że można go używać z Shouldą).

W tym miejscu jest społeczność Railsów na rzecz RSpec lub Shoulda?

Odpowiedz

2

Społeczność railsów popiera zarówno RSpec, jak i Shouldę. To zależy od programisty. Jeśli wolisz Shoulda, użyj go.
Jeśli wolisz RSpec, użyj go;)

Obie są różne biblioteki o podobnym celu. Nie oznacza to, że każdy programista musi być za lub przeciw niemu. Oznacza to tylko, że możesz użyć któregokolwiek z nich.

Wybór zależy od preferencji (i innych programistów, z którymi pracujesz).

3

chodzi mocks i króćców (i podróbki, dwu i etażerka) - kiedy testuje na poziomie jednostki, albo z TDD lub po fakcie, cały punkt mówi jej, że to ma danych, które potrzebujesz, używając skrótów. Piszemy test dla prawdziwego obiektu, aby upewnić się, że faktycznie produkuje on te dane. Ma to na celu sprawdzenie wewnętrznego zachowania badanej klasy, a nie to, czy jej poprzednie połączenia zachowują się poprawnie. To na poziomie jednostki - ty będzie przetestować kompleksowe zachowanie w swoich testach integracji lub funkcji/historii/akceptacji (lub jakikolwiek smak nazwy preferowanego poziomu wyższego poziomu).

Szalony obiekt jest, moim zdaniem, bardziej związany z dalszym strumieniem - chcesz sprawdzić, czy badana klasa wykonała odpowiednie połączenie - nie martwisz się, że cokolwiek się dzieje, tylko że nazwała właściwa metoda z właściwymi argumentami. Mocks są naprawdę dobre. Rspec ma swoje własne szydercze ramy, ale szeroko stosowane są także: Mocha i .

Było wiele dyskusji/objaśnień/debat/płomieni walczących o nazewnictwo tutaj, BTW. Martin Fowler (który jest lepiej wykwalifikowany niż większość osób na ten temat) napisał doniosły wpis na blogu pod adresem clarify it i myślę, że ma to sens. Oto another article, with a few examples.

0

shoulda obserwatorzy: 758.

rspec obserwatorów: 1279.

Ostatecznie, to do ciebie, aby zdecydować, który z nich wolisz.

+1

Te liczby migawek nic nie znaczą, nie widząc trendów za nimi. –

0

O ile wiem, od kiedy wspomniałeś o BDD, wydaje się, że istnieje bardziej naturalny związek między ogórkiem a RSpec. To, co najbardziej lubię w shoulda, to jego walidacja-makra. Istnieją dwa sposoby na rozwiązanie, które w RSpec:

  1. używają shoulda macro's in RSpec, świetnym rozwiązaniem, odpowiedział przed
  2. użycie rspec-validations-expectations wtyczki, małych i mało znanych, ale które rozwiązuje tylko, że (łatwy ActiveRecord walidacji testów).

Powinieneś zdecydowanie sprawdzić, która biblioteka jest dla Ciebie najbardziej naturalna (w jaki sposób wyrażane są testy). Dla mnie, przy wymienionych wcześniej opcjach, łatwiej było odrzucić opcję shoulda (przynajmniej na własną rękę), i poszedłem na rspec i ogórek.

1

Używam matownic typu Shoulda z RSpec. Najlepsze z obu światów: duża społeczność za RSpec, szybki rozwój i wiele relacji z matematami Shoulda.

0

Mój obecny stos narzędzi testowych jest:

  • Steak akceptacji testów
  • Capybara do symulacji przeglądarka z kierowców: Selen & Akephalos
  • Mechanik na odcinki
  • rspec dla testów jednostkowych
0

Wielu programistów Rails na świecie używa RSpec, a niektóre z nich używają Shoulda. DHH, główny programista Railsów woli Test::Unit i Minitest. Thoughbot 's Shoulda opiera się na obu Test :: Unit (i oczywiście Minitest) i RSpec.

Ostatecznie, jako wolontariusz Rails Hotline, otrzymasz więcej wsparcia społecznościowego z RSpec i istnieje mnóstwo dodatkowych klejnotów specjalnie dla poprawy RSpec. Z tym powiedział Minitest i Test :: Unite są rdzeniem Ruby.

[OPINIA] Zwykle używam RSpec, jeśli oprogramowanie wymaga "zachowania" i minimalnego, jeśli wymaga czystej funkcjonalności jednostki (głównie dlatego, że biblioteka testów Minitest jest naprawdę prosta).

Powiązane problemy