2008-10-03 14 views
13

Więc chcę zacząć używać historie rspec, ale nie jestem pewien, gdzie pisanie kontroler, model i przeglądać specyfikacje pasować.Historie i specyfikacje RSpec: Kiedy używać czego?

Na przykład, masz historię „Logowanie” z „Użytkownik zapewnia błędne hasło” scenariusz , nie kończysz testowaniem tych samych rzeczy niż specyfikacje kontrolera/modelu (odpowiedź powinna renderować ..., użytkownik powinien być_nil, itp.)

Moje pytanie brzmi: dla tych, którzy są przyzwyczajeni do robienia bdd (lub historia dd) z RoR, czy nadal piszesz specyfikacje modelu/kontrolera? Jeśli tak, w jaki sposób działasz ("pierwsza historia, a następnie zwężaj się do konkretnych specyfikacji")?

Odpowiedz

8

Jeśli zaczynają teraz z opowiadań (w przeciwieństwie do o wiele starszego typu historie), można zajrzeć do Cucumber który jest wymiana długoterminowe dla RSpec historia biegacza.

Najprostszym sposobem podziału specyfikacji i historii jest wykorzystanie historii do testowania wymagań biznesowych i specyfikacje dla pełnego stosu dla pojedynczych specyfikacji komponentów na niskim poziomie (widoki, pomocników, kontrolery i modele). "Pełny stos" może obejmować zakres od kontrolera/modelu/bazy danych do symulacji klienta przez Webrat do testowania w przeglądarce z Watir lub Selenium.

Ostatecznym sposobem działania "na zewnątrz" w BDD jest rozpoczynanie od opowieści w oparciu o wymagania klienta, a następnie dodawanie specyfikacji elementów, które są potrzebne podczas realizacji opowieści. W idealnym przypadku w pełni pokryjesz poszczególne komponenty specyfikacjami i opiszesz historie najważniejszych przepływów pracy swoich użytkowników, dzięki czemu możesz sprawdzić na najwyższym poziomie, że twoja aplikacja dostarcza funkcjonalności, o którą prosiłeś.

3

Uważam, że historie są przydatne, gdy testują zachowanie, które użytkownik faktycznie wykonuje lub obserwuje - więc zamiast testować, że szablon "nieudanego logowania" jest renderowany, sprawdź, czy odpowiedź zawiera "nie udało się zalogować". IMHO lepiej jest, jeśli historie nigdy nie odnoszą się bezpośrednio do modeli, widoków lub kontrolerów, chociaż czasami trudno jest uzyskać kroki bez ręcznego tworzenia instancji modelu.

Jak widzimy, widok, kontroler i specyfikacje modelu są tylko częścią obrazu. Mówią językiem implementacji ("działanie kontrolera X powinno zrobić Y na model Z") i sprawdź, czy poszczególne części aplikacji działają prawidłowo. Historie uzupełniają obraz mówiąc językiem użytkownika ("kiedy zamieszczam komentarz, powinienem zobaczyć komentarz, który zamieściłem") i sprawdzam, czy części pasują do siebie w sposób spełniający kryteria akceptacji klienta.

znajdę użytecznym pracy jest:

  • napisać scenariusz historię opisującą funkcjonalność muszę dodawać.
  • tak szybko, jak to możliwe, napisz kroki dla tej historii, abyś mógł ją uruchomić (nawet jeśli wszystkie kroki się nie powiodą).
  • napisać specyfikację dla czegoś potrzebnego w tej historii (model może być dobrym miejscem do rozpoczęcia).
  • wpisz kod, aby przekazać specyfikację.
  • napisz więcej specyfikacji i kodu, dopóki historia nie przejdzie.

W ten sposób opowieść może pomóc w określeniu wymagań.

Edytuj: this to dobry artykuł, który porusza związek między historiami i specyfikacjami.

1

Pat Maddox (rdzeń zespołu RSpec) uważa, że ​​w pewnych założeniach, można pominąć specyfikację kontrolera podczas korzystania historie Ogórek/wyposażony

przeczytać o jego punktu widzenia here

0

Co o pomijanie widok specyfikację jeśli ciebie Na tym jest Cucumber + Capybara. Staram się znaleźć specyfikację widoku, która nie jest potrzebna.

Powiązane problemy