Une autre chose à retenir est de vous assurer d'utiliser l'instance de la session correcte afin que vous puissiez bien les aides d'encapsuler url.
Les tests d'intégration vous fournissent une session par défaut. Vous pouvez appeler all session methods directement à partir de vos tests
test "should integrate well" do
https!
get users_path
assert_response :success
end
Toutes ces aides utilisent l'instance de session par défaut qui, si elle ne change pas, va à « www.example.com ». Comme cela a été mentionné, l'hôte peut être changé en faisant l'hôte! ("My.new.host")
Si vous créez plusieurs sessions en utilisant la méthode open_session, vous devez TOUJOURS utiliser cette instance pour appeler les méthodes d'assistance. Cela encapsulera correctement la demande. Dans le cas contraire rails appelleront l'instance de session par défaut qui peut utiliser un hôte différent:
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 vous aviez l'intention d'utiliser l'objet de la session par défaut, vous devrez modifier cet hôte ainsi:
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
'hôte! 'user.myapp.com'' a fonctionné pour moi – deb
Dans une spécification de contrôleur, j'obtiens une erreur en essayant d'utiliser 'host!'. Définir '@ request.host' comme la réponse suggère travaillé cependant. –
Et comment l'utiliser avec RSpec? Je veux dire, où puis-je le configurer? Merci beaucoup! – FRAGA