Jak pisać w RoR z użyciem test-first i BDD (sekwencja działań)?

Po dłuższej przerwie na naukę samego ruby wracam do oswajania RoR i mam pytanie.
Zakładając posiadany zestaw narzędzi rails 3.1, rspec + capybara + capybara webkit driver jak zabrać się za poprawne pisanie przy użyciu BDD?
Przy pomocy tych narzędzi mogę testować:

  • model (w izolacji)
  • kontrolery (w izolacji)
  • widoki (w izolacji)
  • pełne ścieżki (integracyjnie)

Teraz załóżmy, że jest do napisania funkcjonalność X.
Czy mój poniższy tok postępowania jest ok?

  1. testy i implementacja UI (test widoku w izolacji)
  2. napisanie testu integracyjnego danego scenariusza (test integracyjny ścieżki) -> nie będize przechodził praktycznie do samego końca
  3. test i implementacja kontrolera w izolacji
  4. test i implementacja modelu w izolacji
    Teraz dopiero powinien się zazielenić test requesta.

Czy to ma rączki i nóżki, czy są inne praktyki na to?

Hej,

odpowiedź krótka:

  1. Test integracyjny
  2. Test jednostkowy

odpowiedź długa:

Ostatnio staram się ograniczać ilość pisanych testów do niezbędnego minimum. Podobnie jak w przypadku budowania kodu aplikacji stosuje się DRY, tak samo należałoby postępować w przypadku testów. Próbuję więc nie powtarzać się w testach i nie pisać ich “na siłę”.

tak BTW: ktoś testuje widoki?

Dzięki za odpowiedź.

Nie wiem, ale skoro rspec-rails to potrafi to pewnie ktoś to robi. Wg mnie test widoku tutaj trochę nie pasuje, bo tak jak mówisz powinno zaczynać się od integracyjnego (tak to w Javie działało). Integracyjny jest w stanie sprawdzić poprawność widoku pośrednio, a złożone problemy typu kod JS i tak testuje się osobno, np. jakimś Jasmine czy innym podobnym narzędziem.

Dodaj także do narzędzi to: :slight_smile:
http://railscasts.com/episodes/285-spork

Co do pytania to się dołączam. Miałem napisać podobny wątek, ale wiecznie zapominałem.

@Matthias, fakt - może pomóc. Chociaż ostatnio naczytałem się o sposobie na “Fast Rails Tests” który proponuje Corey Haines i rozkminiam to wszystko. Jako że mam Javową głowę nadal, to potrzeba trochę czasu na ogarnięcie tych wszystkich innych koncepcji.

[quote=tomekkos]Dzięki za odpowiedź.

Nie wiem, ale skoro rspec-rails to potrafi to pewnie ktoś to robi. Wg mnie test widoku tutaj trochę nie pasuje, bo tak jak mówisz powinno zaczynać się od integracyjnego (tak to w Javie działało).[/quote]
Nie wiem, gdzie przeczytałeś o tym, że powinno zaczynać się od testu widoku. Zaczyna się od testu integracyjnego.