Un'altra cosa da ricordare è quello di assicurarsi di utilizzare l'istanza corretta sessione modo che si può incapsulare correttamente gli aiutanti url.
I test di integrazione forniscono una sessione predefinita. È possibile chiamare all session methods direttamente dai test
test "should integrate well" do
https!
get users_path
assert_response :success
end
Tutti questi aiutanti si utilizza l'istanza predefinita della sessione, che, se non modificata, va a "www.example.com". Come è stato detto l'host può essere cambiato facendo host! ("My.new.host")
Se si creano più sessioni utilizzando il metodo open_session, è necessario SEMPRE utilizzare tale istanza per chiamare i metodi di supporto. Questo incapsulerà correttamente la richiesta. In caso contrario, le rotaie chiameranno l'istanza sessione predefinita che può utilizzare un host diverso:
test "should integrate well" do
sess = open_session
sess.host! "my.awesome.host"
sess.get users_url #=> WRONG! will use default session object to build url.
sess.get sess.users_url #=> Correctly invoking url writer from my custom session with new host.
sess.assert_response :success
end
Se si intende utilizzare l'oggetto sessione predefinita, allora dovrete modificare tale ospite così:
test "should integrate well" do
sess = open_session
sess.host! "my.awesome.host"
host! sess.host #=> Set default session host to my custom session host.
sess.get users_url
end
'host! 'user.myapp.com'' ha funzionato per me – deb
In una specifica del controller, ottengo un errore quando provo a usare 'host!'. Impostazione '@ request.host' come se la risposta suggerisse funzionasse. –
E come lo uso con RSpec? Voglio dire, dove lo configuro? grazie molto! – FRAGA