Spis treściKliknij link, aby przejść do wybranego miejsca
Ta treść została automatycznie przetłumaczona z ukraińskiego.
Jeśli rozwijasz aplikację za pomocą Ruby on Rails, prawdopodobnie jesteś już zaznajomiony z testowaniem za pomocą RSpec. Ale za każdym razem, gdy otwierasz pliki spec_helper.rb i rails_helper.rb, możesz się zastanawiać: dlaczego są dwa i czym się różnią?
spec_helper.rb: baza/grunt dla testowania
Ten plik jest podstawową konfiguracją dla RSpec. Jego zadaniem jest zapewnienie minimalnych ustawień dla testów. W idealnym przypadku, spec_helper.rb nie powinien zależeć od Rails. Mówiąc prosto - to plik, który zawiera podstawowe ustawienia dla RSpec, a mianowicie:
- Wizualizacja testów: można określić, jak będą wyglądać wyniki testowania w konsoli (na przykład, pasek postępu).
- Podłączenie dodatkowych narzędzi: do pliku można zaimportować specjalne biblioteki, takie jak Faker, FactoryBot lub niestandardowe pomocniki do testów.
- Debugowanie: włączenie trybu szczegółowego logowania lub integracja z pry w celu debugowania podczas testowania.
Ten plik jest przydatny, jeśli musisz przetestować pojedyncze klasy Ruby lub metody, które nie zależą od Rails. Użycie tylko spec_helper.rb pozwala szybciej uruchamiać testy, ponieważ Rails nie jest ładowany.
rails_helper.rb: integracja z Rails
rails_helper.rb opiera się na spec_helper.rb, ale dodaje specyficzne dla Rails ustawienia. Wśród nich:
- automatyczne ładowanie Rails;
- integracja z ActiveRecord do pracy z bazą danych w testach;
- podłączenie pomocniczych modułów do testowania kontrolerów, modeli i widoków.
Ten plik jest często używany do testów, które zależą od funkcjonalności Rails. Na przykład, testowanie modeli z walidacjami lub kontrolerów z zapytaniami do bazy danych wymaga załadowania rails_helper.rb.
Co i kiedy podłączać?
- Używaj spec_helper.rb, gdy testujesz logikę, która nie jest związana z Rails. Mogą to być zwykłe klasy Ruby, PORO lub pomocnicze moduły.
- Używaj rails_helper.rb, gdy twoje testy zależą od środowiska Rails.
W dużych projektach ważne jest, aby zminimalizować obciążenie procesu testowego (przyspieszyć testy na CI oraz zmniejszyć koszty związane z wykorzystaniem zasobów). Jeśli zawsze używasz rails_helper.rb, nawet do prostych testów, czas wykonania testów wzrasta. Z drugiej strony, zbyt częste rozdzielanie może skomplikować konfigurację. Dlatego warto połączyć elastyczność i wydajność, starannie wybierając między tymi plikami w zależności od zadań.
Ten post nie ma jeszcze żadnych dodatków od autora.