Pracuję nad interfejsem API rails i zamierzam teraz napisać kilka testów RSpec dla kontrolerów. Czytałem w pobliżu i nie byłem w stanie dowiedzieć się, jaka jest faktyczna różnica między specyfikacjami kontrolera i specyfikacjami żądań, a którego prawdopodobnie powinienem użyć, jeśli testuję API.Specyfikacje kontrolera kontra żądania specyfikacji?
Odpowiedz
Specyfikacja kontrolera - Specyfikacja kontrolera to opakowanie RSpec do testu funkcjonalnego Rails. To pozwala symulować pojedynczego żądania HTTP w każdym przykładzie, a następnie określ oczekiwanych rezultatów
Żądanie specyfikacje - Zapytanie specyfikacje zapewniają cienką otoki wokół testy integracyjne szynach i są zaprojektowany do jazdy zachowania poprzez pełne stos, w tym routing (dostarczany przez Rails) i bez stubowania (to zależy od ciebie).
Jeśli chcesz przetestować kontrolery interfejsu API, zalecamy testowanie pojedynczych żądań za pomocą Controller specs
.
Jeśli używasz starszych wersji Railsów, ogólne zalecane style kodu wydają się być zgodne ze specyfikacją kontrolera. Railsy 5 zmieniły sposób działania testów kontrolerów; są to testy integracyjne i nie można już uzyskać dostępu do elementów wewnętrznych kontrolera. Nie jest dla mnie jasne, czy jest jakiś sens posiadania testów kontrolera. Żądania i specyfikacje funkcji wydają się być zalecanym podejściem do przyszłego rozwoju. https://everydayrails.com/2016/09/05/replace-rspec-controller-tests.html – CJBrew
Mam problem z tym, czy kontrolery testów jednostkowych, czy nie, po prostu wywołując akcję bezpośrednio, a nie za pomocą warstwy http. Czy to jest zalecane? – Jwan622
Cytowanie Aaron Sumner:
Zarówno Szyny i zespoły rspec proponujemy zastąpienie lub usunięcie testy kontrolera Twojego w aplikacji (znany również jako warstwy funkcjonalnej testu), w rzecz bezpośredniego testowania modeli (jednostki), lub z testami integracyjnymi wyższego poziomu .
Dla nowego API wolę używać specyfikacji zamówienia i trafiać w moje "punkty końcowe" (inaczej modele i logika biznesowa) niż przy użyciu testów kontrolera.
Rzeczywiście, zespół Rspec oficjalnie stwierdza, że specyfikacje kontrolera są obecnie zniechęcane:.
http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/
Dla nowych aplikacji Rails: nie zaleca się dodanie gem szyn-kontroler-testów do aplikacji. Oficjalna rekomendacja zespołu Rails i podstawowego zespołu RSpec polega na napisaniu specyfikacji zleceń . Żądania specyfikacji pozwalają skupić się na pojedynczej akcji kontrolera , ale w przeciwieństwie do testów kontrolera dotyczą routera, stosu oprogramowania pośredniego oraz obu żądań i odpowiedzi szafy. To dodaje realizmu do testu, który piszesz i pomaga uniknąć wielu problemów z , które są typowe w specyfikacjach kontrolera. W Railsach 5, żądania specyfikacji są znacznie szybsze niż oba żądania lub specyfikacje sterowników były w szynach 4, dzięki pracy Eileen Uchitelle1 zespołu Rillerów Rails.
Gdybym był tobą, zrezygnowałbym ze specyfikacji kontrolera na rzecz specyfikacji wymagań/integracji. –