10
votes

Comment accéder à la session du test d'intégration des rails?

Considérez le test d'intégration suivant:

test "if there is no user in session, redirect to index and flash message" do
  open_session do |sess|
    post '/login', :email => users(:client).email, :password => 'rumpelstiltskin'
    sess[:user] = nil
    get '/user_page'
    assert_redirected_to index_path
    assert_equal "Your session has expired. Please log in again", flash[:notice]
  end    
end


1 commentaires

Est-ce que ce test d'unité d'unité ou d'intégration est-il? :)


4 Réponses :


2
votes

Il suffit d'utiliser session [: utilisateur] sans open_session bloc


2 commentaires

Session [: utilisateur] = nil ne transmet pas la session mise à jour sur le contrôleur.


Cela fonctionne dans Rails 2, mais pas rails 3 (qui est la version utilisée dans la question).



2
votes

Il s'avère qu'il ne semble pas possible de le faire.


0 commentaires

4
votes

dans les rails 3.2.3 Ce qui suit semble fonctionner pour moi: xxx

Je ne sais pas si cela fonctionnera pour vous, donc Goodluck!


0 commentaires

0
votes

Ce n'est pas ce que les tests d'intégration sont conçus pour. Vous ne devez pas modifier directement la session, mais vous devez frapper votre chemin / déconnexion.


2 commentaires

Oui, mais la question concerne l'accès à la session .


@Borissttinicky - Oui, et j'ai dit n'accédez pas à la session, c'est Wronfleaded. J'ai écrit ceci il y a 2 ans, mais je pense que je suis toujours debout.