Wydaje się, że każdy ma swój własny przepis na testy, które sprawdzają się w ich przypadku. Moje doświadczenie jest podobne do twojego - długoletni programista PHP nie używający żadnych testów (ale wykonujący wiele ręcznych testów w trybie white-box podczas tworzenia). Niedawno zacząłem pisać moją pierwszą aplikację na poziomie produkcyjnym, z aplikacją Raid-for-playing-with-Rails. Oto moje przemyślenia po pierwszych trzech miesiącach.
Ja także uznałem Ogórek za zbyt skomplikowany, abym mógł zacząć. Walczyłem z tym zbyt długo, zanim w końcu uświadomiłem sobie, że jestem zbyt daleko od rzeczywistych ram badawczych. Kiedy spadłem do czystego RSPec, sprawy stały się znacznie jaśniejsze. To powiedziawszy, teraz, gdy napisałem swoją pierwszą aplikację z solidnym zestawem testowym, myślę, że prawdopodobnie mógłbym upuścić Cucumbera w mojej następnej recepturze aplikacji Rails i czuć się bardziej komfortowo, używając go do testowania integracji, jednocześnie nadal używając RSpec do testowania jednostkowego.
Rozwinąłem niezdrowe zauroczenie RSpecem, kiedy w końcu zrozumiałem proces. Naprawdę piękne jest prowadzenie tych testów i zobaczenie wszystkiego na zielono. W rzeczywistości satysfakcjonujące jest czerwone, ponieważ mówi mi, nad czym pracować dalej.
Używam domyślnego Webrat do testów integracyjnych. Nie natknąłem się na nic, czego Webrat nie byłby w stanie rozwiązać, ale nie wypróbowałem też Capybary, więc może po prostu nie wiem, jak źle to mam.
Zacząłem pisać swoje testy, podążając za Poradnikiem Railsów, w których autor mówi: "Ponieważ nie jestem stronniczy w oddzielnych testach dla widoków lub pomocników, które uważam za kruche lub zbędne naszym pierwszym krokiem jest ich usunięcie. " (Strona 93, paragraf 2) Po napisaniu paczki metod pomocniczych postanowiłem wrócić i napisać osobne testy pomocnicze dla wszystkich z nich. Nadal rozwijam testy przeglądania w testach kontrolerów, ale mogłem zobaczyć, jak je oddzielić w następnym projekcie. FWIW, myślę, że naprawdę powinieneś pisać testy na wszystko na pewnym poziomie, nawet jeśli polegasz tylko na testach kontrolerów, aby ćwiczyć swoje poglądy i/lub twoje testy widzenia, aby ćwiczyć swoje metody pomocnicze.
Używam Factory Girl z tym projektem i stwierdziłem, że jest bardzo przydatny i łatwy w użyciu. Nie próbowałem Machinist, ale wydaje się równie popularny.Jedno, o czym powiem, to to, że kiedy po raz pierwszy zacząłem pisać moje fabryki, użyłem klejnotu FFaker do generowania losowej zawartości do każdego stworzonego przeze mnie obiektu fabrycznego. Z początku wydawało mi się to miłe, ponieważ zmienna zawartość czasami powodowała, że znajdowałem rzeczy, które przeoczyłem w rozwoju (nie mogę w tej chwili myśleć o dobrym przykładzie), ale oznaczało to również, że musiałem się martwić o obcięcie wszystkich zwróciło dane FFakera, aby pasowały do ograniczeń długości w modelu. Na dłuższą metę okazało się to zbyt nieporęczne, więc usunąłem cały ten kod i użyłem ciągów statycznych dla wszystkich moich fabryk i tylko dla wymaganych pól. Potem, kiedy chciałem wykonać określone pole, zrobiłbym to w mojej faktycznej specyfikacji. IMO, twoje fabryki powinny zawierać tylko tyle danych, aby stworzyć prawidłowy obiekt i nic więcej.
Co do szyderstwa, znalazłem tylko kilka miejsc, w których musiałem kpić z czegoś, ale być może jestem zbyt nowy, aby Rspec wiedział, że robię to źle.
Na koniec, tak jak w przypadku konkretnych przykładów, wystarczy spojrzeć na GitHub, na przykład aplikacje Rails lub projekty Rails open source, które zawierają testy. Lub, podobnie jak ja, wykonaj razem z Tutorial Book Rails. Niezależnie od tego, co zdecydujesz się zrobić, zacznij jak najbliżej metalu, a następnie spróbuj różnych klejnotów/wtyczek/etc, zawsze upewniając się, że możesz wycofać swoje zmiany, jeśli zdecydujesz, że wyniki ci się nie podobają. Odkryłem, że próba rozpoczęcia od kompletnego przepisu (np. Szelki, światło niebieskie-specjalne itp.) Była zbyt przytłaczająca. Rozpoczynając od surowej aplikacji Railsa, mogłem wypróbować różne rozwiązania (spinacz do papieru w porównaniu z noskiem nośnym, typus versus rails_admin, odprawa w porównaniu z devise, itp.), Aby sprawdzić, które z nich działają zgodnie z osobistymi preferencjami. Jest oczywiste, że nie ma jednego doskonałego przepisu na aplikację Rails, a każdy preferowany przepis to tylko opinia.