Otra cosa a recordar es asegurarse de utilizar la instancia correcta sesión para que pueda encapsular adecuadamente los ayudantes de URL.
Las pruebas de integración le proporcionan una sesión predeterminada. Puede llamar all session methods directamente de sus pruebas
test "should integrate well" do
https!
get users_path
assert_response :success
end
Todos estos ayudantes están utilizando la instancia de sesión predeterminado, que si no se cambia, va a "www.example.com". Como se ha mencionado, el host se puede cambiar haciendo host! ("My.new.host")
Si crea varias sesiones utilizando el método open_session, SIEMPRE debe usar esa instancia para llamar a los métodos auxiliares. Esto encapsulará adecuadamente la solicitud. De lo contrario rieles llamarán a la instancia de sesión predeterminado que puede utilizar un host diferente:
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
Si usted pretende utilizar el objeto de sesión predeterminado, entonces tendrá que alterar esa acogida, así:
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'' funcionó para mí – deb
En una especificación de controlador, aparece un error al tratar de usar 'host!'. Sin embargo, establecer '@ request.host' como la respuesta sugiere que funcionó. –
¿Y cómo lo uso con RSpec? Quiero decir, ¿dónde lo configuro? ¡muchas gracias! – FRAGA