2016-10-24 1 views
1

Je suis en train de mettre à jour des rails 4.2.6 aux rails 5.0.0.1 mais obtenir l'avertissement suivant lors de l'exécution de mes tests:Rails 5 avertissement pour les tests deprecation

deprecation AVERTISSEMENT: ActionController :: TestCase HTTP demande Les méthodes n'acceptent que les arguments de mots-clés dans les futures versions de Rails.

Exemples:

get: show, params: {id: 1} session: {user_id: 1} processus: mise à jour, méthode :: poste, params: {id: 1} (appelé du bloc en à /home/ubuntu/workspace/my_app/test/controllers/tractions_controller_test.rb:25)

Je fais des changements appropriés pour tenir compte de ce changement. Cependant, pour la ligne de test d'intégration ci-dessous, je ne sais pas comment changer correctement:

delete api_sessions_path, { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 

Ainsi, les passes de test, mais avec l'avertissement de dévalorisation. Si je le change aux deux options ci-dessous le test échoue avec une erreur de syntaxe. Comment ajuster correctement la ligne?

delete api_sessions_path, params: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 
delete api_sessions_path, params: { { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } } 

Mise à jour: J'ai aussi essayé d'utiliser session avec les options ci-dessous, mais qui produit l'erreur ArgumentError: unknown keyword: session.

delete api_sessions_path, session: { api_session: { org_id: nil } }, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 
delete api_sessions_path, params: { api_session: { org_id: nil } }, session: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 
delete api_sessions_path, params: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email }, session: { api_session: { org_id: nil } } 
delete api_sessions_path, session: { api_session: { org_id: nil } }, { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 
+0

Remarque: Je devine. Les bordures semblent indiquer que vous devrez peut-être utiliser plus de clés de hachage que de paramètres, par exemple en regardant 'get' ici: http://edgeapi.rubyonrails.org/classes/ActionController/TestCase/Behavior.html#method-i -delete montre qu'il y a aussi 'session' et quelques autres. Peut-être que les jetons HTTP doivent utiliser 'session' au lieu de' params'? –

+0

Merci, je l'ai essayé (voir mise à jour pour poster), mais cela ne semble pas fonctionner. – Marty

Répondre

1

J'ai trouvé la solution. L'étiquette headers a dû être ajoutée:

delete api_sessions_path, params: { api_session: { org_id: nil } }, headers: { "HTTP_API_TOKEN": "token", "HTTP_USER_EMAIL": @user.email } 
+0

Donc .. à peu près ce que j'ai suggéré, mais en-têtes au lieu de la session;) Content que vous l'ayez fonctionné. –