Je suis un débutant Rails qui travaille sur le tutoriel Rails de Michael Hartl et je reçois une erreur que je n'ai aucune idée de comment résoudre. Pour référence, il s'agit de mettre en œuvre les modifications dans la liste 9.24 (https://www.railstutorial.org/book/advanced_login). J'ai ignoré le chapitre 9 (puisqu'il est censé être facultatif) mais au chapitre 10 il demande d'inclure les changements faits dans la liste 9.24, ce que j'ai fait et mes tests échouent toujours.Accéder à la session dans le test d'intégration
C'est l'erreur que je reçois lorsque je lance rails tests
Error:
UsersEditTest#test_unsuccessful_edit:
NoMethodError: undefined method `session' for nil:NilClass
test/test_helper.rb:18:in `log_in_as'
test/integration/users_edit_test.rb:14:in `block in <class:UsersEditTest>'
bin/rails test test/integration/users_edit_test.rb:12
E
Error:
UsersEditTest#test_successful_edit:
NoMethodError: undefined method `session' for nil:NilClass
test/test_helper.rb:18:in `log_in_as'
test/integration/users_edit_test.rb:28:in `block in <class:UsersEditTest>'
Les tests (test/intégration/users_edit_test.rb) qui échouent sont:
test "successful edit" do
log_in_as(@user)
get edit_user_path(@user)
... end
test "unsuccessful edit" do
log_in_as(@user)
get edit_user_path(@user)
... end
et voici la méthode d'intégration/test_helper qui est appelée
# Log in as a particular user.
def log_in_as(user)
session[:user_id] = user.id
end
Ce qui est particulièrement déroutant il y a une autre méthode dans l'assistant de test qui utilise également des sessions, et est appelée dans user_login_test qui fonctionne bien.
Toute aide serait grandement appréciée !! La session est uniquement disponible après première demande dans les cas de test.