Ho un test rspec che registra un'azione. Nell'azione, una variabile di sessione è sicuramente impostata, tuttavia nel mio test del controller, l'hash della sessione è vuoto. Come posso verificare un test Rspec per vedere se il controller imposta la variabile di sessione sul valore corretto?Test Rspec se è stata impostata una variabile di sessione in un'azione del controller
risposta
È possibile accedere alla sessione direttamente in rspec in questo modo: session[:key]
. Basta confrontare quello con il valore che desideri.
scusa penso che avrei dovuto dire che cosa ho provato. l'ho provato, ma la sessione era vuota. la specifica ha una sessione vuota ma usando il controller nel modo normale, funziona – chris
@Chris, l'ho fatto per molte volte quindi so che funziona. Si prega di incollare il codice, se necessario. –
Usi qualsiasi before_filter
nel controller? Questo potrebbe essere il caso, se before_filter
cambia il flusso e il tuo codice con l'assegnazione di una variabile alla sessione non è nemmeno valutato.
Per esempio si può avere questa linea nel controller:
# ...
before_filter :authenticate_user!
# ...
Questo significa che se non si è effettuato l'accesso, non entrerete qualsiasi metodo in questo controller. Quindi la variabile session
sarà vuota.
Vedere this. Il problema principale è che la variabile session
non è accessibile dal codice di prova. Per risolverlo, aggiungi le linee di gallinelle a spec/spec_helper.rb
:
def session
last_request.env['rack.session']
end
questa era probabilmente la risposta a ciò che era veramente sbagliato nel momento in cui ho postato questo. – chris
- 1. Come sapere se una sessione è stata impostata
- 2. Assegna se variabile è impostata
- 3. Trovando tutti i luoghi è stata impostata una variabile?
- 4. Test del controller Rspec con Javascript
- 5. Test variabile classe RSpec
- 6. Verificare se la proprietà è stata impostata in phin
- 7. Come si ottiene una variabile ENV impostata per rspec?
- 8. Test del controller RSpec con graffetta
- 9. Rails test del controller rspec vs test di integrazione
- 10. Come verificare la variabile di istanza è stata istanziata nel controller con RSpec
- 11. Test controller RSpec - blank response.body
- 12. Test controller in gem con RSpec
- 13. Come verificare se una variabile è impostata su Chrome Storage
- 14. test del controller rspec con autenticazione di devise
- 15. Come verificare se una variabile di ambiente non è impostata o impostata sulla stringa vuota?
- 16. Controller Test con sessione finto
- 17. Rspec newbie: esempio rapido di test del controller annidato?
- 18. Test di una variabile di sessione in django
- 19. controllo jQuery se la proprietà CSS è stata impostata
- 20. Test controller RSpec - "assegna" comportamento inaspettato
- 21. controllare se la variabile di ambiente è già impostata
- 22. Test dell'unità Clojure: Verifica se una funzione è stata chiamata
- 23. Errore Eloquent: Una radice di facciata non è stata impostata
- 24. Come faccio a verificare se una variabile è stata inizializzata
- 25. test se è stata definita una proprietà MSBuild?
- 26. stub una variabile di istanza all'interno del controller
- 27. Come verificare se una variabile "lateinit" è stata inizializzata?
- 28. RSpec Test del controller che non genera l'url corretto
- 29. Test del controller con RSpec, Idea, Factory Girl
- 30. oggetto di sessione nel test di integrazione di rspec
Quindi qual è stata la vera causa di questo? (dal momento che hai risposto con una risposta ma non hai spiegato) – lulalala
La risposta è stata corretta per la domanda che ho posto, ma il mio problema è risultato non correlato alla mia domanda – chris