Mam test rspec, który wysyła do akcji. W akcji zmienna sesyjna jest zdecydowanie ustawiona, jednak w moim teście kontrolera wartość skrótu sesji jest pusta. Jak mogę sprawdzić test Rspec, aby sprawdzić, czy kontroler ustawił zmienną sesji na odpowiednią wartość?Test Rspec, jeśli zmienna sesji została ustawiona w akcji kontrolera
Odpowiedz
Dostęp do sesji można uzyskać bezpośrednio w rspec: session[:key]
. Po prostu porównaj to z żądaną wartością.
Przepraszam zgaduję, że powinienem był powiedzieć, co próbowałem. próbowałem tego, ale sesja była pusta. specyfikacja ma pustą sesję, ale używając kontrolera w normalny sposób, działa – chris
@ Chris, robiłem to wiele razy, więc wiem, że to działa. W razie potrzeby wklej ten kod. –
Czy używasz dowolnego sterownika before_filter
? Może tak być, jeśli before_filter
zmienia przepływ, a Twój kod z przypisaniem zmiennej do sesji nawet nie został oceniony.
Na przykład można mieć ten wiersz w kontrolerze:
# ...
before_filter :authenticate_user!
# ...
Oznacza to, że jeśli nie jesteś zalogowany, nie wejdziecie żadnej metody w tym kontrolerze. Tak więc zmienna session
będzie pusta.
Zobacz this. Głównym problemem jest to, że zmienna session
nie jest dostępna z kodu testowego. Aby rozwiązać ten problem, dodaj linie puszczania pod adresem: spec/spec_helper.rb
:
def session
last_request.env['rack.session']
end
to była prawdopodobnie odpowiedź na to, co faktycznie było złe w momencie, kiedy to opublikowałem. – chris
- 1. Test RSpec do tworzenia akcji kontrolera dla zagnieżdżonego zasobu
- 2. Test kontrolera RSpec z spinaczem
- 3. ustawiona zmienna sesja w laravel
- 4. Test kontrolera Rspec zawodzi z postacią Apostrophe?
- 5. Test kontrolera RSpec nie generuje poprawnego adresu URL
- 6. Test pomocnika aplikacji RSpec: Niezdefiniowana zmienna lokalna lub metoda `helper`
- 7. „Zmienna” została użyta zanim została zdefiniowana
- 8. Zmienna sesji Asp.net
- 9. Testowanie kontrolera Rspec z Javascriptem
- 10. Makro kontrolera RSpec nie działa
- 11. Tablica jako zmienna sesji
- 12. RSpec Test niestandardowy walidator
- 13. rspec: Test przekierowania w Devise :: OmniauthCallbacksController podklasy
- 14. Uruchom debugger ruby, jeśli test rspec nie powiedzie się
- 15. ActionController :: InvalidCrossOriginRequest w test kontrolera
- 16. Render akcji kontrolera z innego kontrolera
- 17. Plik Makefile, jeśli zmienna jest pusta
- 18. Jak sprawdzić, czy zmienna jest ustawiona w pamięci masowej Chrome
- 19. Właściwość zależności WPF nie została ustawiona
- 20. Sprawdź, czy nieruchomość została ustawiona - używając Min
- 21. Zmienna globalna w Jest Unit Test
- 22. zmienna funkcji instancji nie została zmieniona?
- 23. Rspec test send_data nie przechodzi
- 24. Test RSpec/Capybara ma_selector zagadkę
- 25. Zmienna przepustka Laravel do kontrolera
- 26. Rspec Testowanie kontrolera w Railsach kontrolera dziedziczącego z AbstractController :: Base
- 27. Jak się dowiedzieć, kiedy zmienna instancji zostanie ustawiona w Ruby
- 28. Wywołanie akcji kontrolera z widoku w Ember
- 29. Zapobieganie ujawnianiu metody kontrolera Grails jako akcji
- 30. Zmienna prywatna AngularJS w funkcji kontrolera
Więc jaka była tego rzeczywista przyczyna? (odkąd ty zaznaczyłeś odpowiedź, ale tak naprawdę nie wyjaśniłeś) – lulalala
Odpowiedź była poprawna na pytanie, które zadałam, ale mój problem zakończył się niezwiązaniem z moim pytaniem – chris