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.
- 1. Kiedy używać kontrolera API kontra kontrolera MVC
- 2. W jaki sposób można określić specyfikacje kontrolera, aby użyć podpisanego żądania OAuth
- 3. Historie i specyfikacje RSpec: Kiedy używać czego?
- 4. Zapis kontrolera i specyfikacje funkcji dla ActiveAdmin przy użyciu RSpec?
- 5. Podejścia do przyspieszenia specyfikacji żądań RSpec
- 6. Widok modelu kontrolera kontra jednostka kontroli granicznej
- 7. Jakie są specyfikacje Motion JPG?
- 8. Brak odpowiednika trasa w specyfikacji kontrolera dla mojej skomplikowanej trasie
- 9. rspec: Jak przypisać zmiennej instancji kontrolera w specyfikacji
- 10. Rails/rspec: jak ustawić pliki cookie w specyfikacji żądania?
- 11. Sposób sekwencyjnego uruchamiania specyfikacji
- 12. Generowanie żądania http post z kontrolera
- 13. Wymyślaj i rspec-rails - Jak zalogować użytkownika w specyfikacji typu zamówienia (specyfikacje oznaczone typem:: request)?
- 14. Specyfikacje kodów iOS iOS
- 15. gdy uruchomiony specyfikacje Jasmine
- 16. Specyfikacja kontrolera DRY z RSpecem
- 17. coraz rspec zobacz specyfikacje do renderowania układ aplikacji
- 18. Uboczny cookie w żądaniu specyfikacji
- 19. .net WebSocket: CloseOutputAsync kontra CloseAsync
- 20. JavaScript, Jasmine, ukryj jaśminowe specyfikacje
- 21. RSpec: Jaka jest różnica między funkcją a specyfikacją żądania?
- 22. Dlaczego specyfikacje wyjątków C++ nie są sprawdzane podczas kompilacji?
- 23. symfony2 uzyskiwanie parametrów trasy (argumenty kontrolera względem żądania)
- 24. Uzyskaj treść żądania POST w działaniu kontrolera MVC
- 25. Spring MVC: atrybut żądania wiązania do parametru metody kontrolera
- 26. Jak mogę uzyskać specyfikacje CUDA na komputerze z systemem Linux?
- 27. Jak używać specyfikacji CoffeeScript z Jasmine-Rails
- 28. Procedura specyfikacji pakietu
- 29. Wzorzec specyfikacji i wydajność
- 30. Znajdowanie specyfikacji .NET
Gdybym był tobą, zrezygnowałbym ze specyfikacji kontrolera na rzecz specyfikacji wymagań/integracji. –