5

Quello che devo fare è usare il metodo current_user mentre si definiscono i passi di Cetriolo. Sto usando Clearance nel mio progetto.Cetriolo e spazio libero: current_user in steps

Prima di tutto ho provato a usare sign_in ma non ha funzionato (credo che Cucumber World non sappia sui metodi di Clearance ...).

Quindi, come faccio a rendere Cuckes riconoscere i metodi current_user e sign_in/sign_out?

risposta

6

Le funzionalità di Cucumber devono guidare l'applicazione tramite l'interfaccia utente pubblica. Qualcosa di simile:

Given /^I am signed in as "([^\"]*)"%/ do |username| 
    visit 'sign_in' 
    fill_in 'Username', :with => username 
    click 'Sign In' 
end 

Poiché il metodo current_user non è disponibile per il browser, non si dovrebbe essere di utilizzare con la spec.

Si potrebbe simulare nei passaggi memorizzando @current_user nel passaggio precedente e quindi fornire un lettore di attributi per questo.

+0

Dopo 9 mesi mi sono reso conto di come cucke giusto Ora capisci perché la tua risposta è stata corretta in un giorno. – gmile

+0

Tuttavia, è ancora frustrante. Perché 'current_user' è' nil' anche sul lato server, non solo sul lato browser. –

1

Non sono d'accordo con l'idea che ogni test di accettazione (cetriolo o altro) debba esercitare la logica di accesso. Fortunatamente, se sei d'accordo, Clearance ha aggiunto un test back door che ti consente di saltare i passaggi di accesso.

user = create(:user) 
visit posts_path(as: user) 

Ora è possibile lasciare le funzioni d'accesso relative alla guida l'interfaccia utente di login come utente sarebbe e saltare che per caratteristiche che non sono direttamente collegati al login.

+0

Grazie mille! – kwerle