Ciao, sto cercando di eseguire alcuni test funzionali della mia app Rails 3 che utilizza Devise e CanCan.Test funzionali con Rails e Devise. Cosa mettere nei miei infissi?
Nel mio modello User ho l'età degli utenti, voglio provare che un utente può visitare solo una certa pagina, se sono:
- loggato
- Oltre 35
Ho visto nel documento Devise che posso usare: * sign_in * e l'ho messo nei miei test e sembra funzionare - il test non ha errori perché ho:
include Devise::TestHelpers
nel mio * test_helper.rb *
Quando eseguo il test, viene visualizzato un errore perché * sign_in * non è definito. Quindi non è un problema di aiuto.
Quando si esegue il test e si verifica se span # registrato ha un evento il test ha esito negativo perché sono presenti 0 occorrenze. arco # loggedin appare solo * Se user_signed_in? *
cosa ho bisogno di mettere nei miei infissi o le prove per creare un utente di prova che è anche un utente completamente sottoscritto (confermato, ecc)?
Visualizza codice: Codice
<% if user_signed_in? %>
<span id="loggedin">User is signed in</span>
User age is <span id="age"><%= current_user.age.to_s %></span>
<% end %>
prova:
test "should get index" do
sign_in :one
get :index
assert_response :success
assert_select 'span#loggedin', :count => 1
end
Fixture:
one:
email: [email protected]
age: 36
Funziona bene in fase di sviluppo quando faccio il login manualmente, ma spero di automatizzare tutto - il punto di testare davvero !!
Puoi utilizzare ERB nei tuoi dispositivi, che ti aiuteranno a rendere i dispositivi più facili da mantenere. Potresti usare strumenti come FactoryGirl invece che (o in combinazione con) dispositivi, questo renderà i tuoi test più facili da mantenere, ma rallenterà significativamente i test. – iain
Conosco l'utilizzo di ERB nei miei dispositivi, ma quale ERB è necessario per generare l'apparecchiatura sopra? Questo era il cuore della mia domanda - in particolare, cosa devo inserire nei miei dispositivi? –
So che questo è un vecchio, ma mi sono imbattuto in esso cercando aiuto in uno scenario simile. I miei esperimenti indicano che aggiungere semplicemente un timestamp 'confirmed_at' al tuo dispositivo sembra fare il trucco. – Chris