Comment puis-je régler une demande.référent de l'intérieur de mon RSpec?
Je suis en train d'essayer d'éviter d'utiliser mon session[:referred_by]
, et souhaitez utiliser le request.referrer
. Cependant, mon RSpec tests échouent car le TestRequest
ne pas stocker une request.referrer
J'ai donc effectuer les opérations suivantes dans l'ordre pour les tests Rspec de travail. Est-il un moyen de faire mieux:
referrer = request.referrer ? request.referrer : '/'
redirect_to referrer, :alert => error_message
Vous devez vous connecter pour publier un commentaire.
S'en moquer:
Ou si vous n'avez pas de soins si elle n'est pas appelée, frappé:
referer
/referrer
ActionDispatch::TestRequest
s'étendActionDispatch::Request
qui s'étendRack::Request
.La méthode est définie comme suit
Aussi loin que je me souvienne, vous pouvez accéder à la variable d'environnement dans le RSpec de test en utilisant
request.env
. Cela signifie, il devrait être possible de mettre quelque chose commeBien sûr, cela dépend du type de RSpec exemple de groupe que vous utilisez.
request.env['HTTP_REFERER'] = 'http://example.com'
a fonctionné pour moi. Rspec version 3.4.4Sur Rails 5 la solution retenue ne semble pas fonctionner anyore, mais la mise en
request.env['HTTP_REFERER']
directement, comme Simone Carletti l'indique, fonctionne.Avec Rails4/Rspec3, dans les specs de requête,
request
n'est pas disponible jusqu'à ce que vous faites un appel http. Mais vous pouvez assigner la demande.referer en faisant quelque chose comme ceci:Solution pour les Rails de 5,2+ & RSpec 3.8+
Pour quelqu'un d'autre Googler cela, vous pouvez également stub de la demande dans un helper spec comme ceci: