Erreur dans Api::V1::MembershipsControllerTest#test_should_create_membership #5

Closed
opened 2021-08-06 14:49:35 +02:00 by Lou · 4 comments
Owner

Cette erreur se produit lors des tests unitaires :

Error:
Api::V1::MembershipsControllerTest#test_should_create_membership:
NoMethodError: undefined method `id' for nil:NilClass
    app/controllers/api/v1/memberships_controller.rb:14:in `create'
    test/controllers/api/v1/memberships_controller_test.rb:43:in `block (2 levels) in <class:MembershipsControllerTest>'
    test/controllers/api/v1/memberships_controller_test.rb:42:in `block in <class:MembershipsControllerTest>'

Le problème c'est que l'application a un comportement tout a fait normal et ne produit aucune erreur lors du déclenchement de la méthode create du contrôleur membership. Pour l'instant j'ai commenté le test pour passer l'erreur sous silence.

Cette erreur se produit lors des tests unitaires : ``` Error: Api::V1::MembershipsControllerTest#test_should_create_membership: NoMethodError: undefined method `id' for nil:NilClass app/controllers/api/v1/memberships_controller.rb:14:in `create' test/controllers/api/v1/memberships_controller_test.rb:43:in `block (2 levels) in <class:MembershipsControllerTest>' test/controllers/api/v1/memberships_controller_test.rb:42:in `block in <class:MembershipsControllerTest>' ``` Le problème c'est que l'application a un comportement tout a fait normal et ne produit aucune erreur lors du déclenchement de la méthode `create` du contrôleur `membership`. Pour l'instant j'ai commenté le test pour passer l'erreur sous silence.
Owner

Bizarre. Le code ligne 20 ne contient meme pas de ref à id, je suppose que c'est les lignes juste au dessus ?

  def create
    memberId = User.where(username: params[:membership][:username])[0].id
    teamId = Team.where(name: params[:membership][:team_name])[0].id

Tu as essayé de le debug avec un coup de binding.pry en première ligne du create ? Comme ça tu pourrais inspecter le contenu de la bdd (qui devrait normalement contenir tes fixtures)

Bizarre. Le code ligne 20 ne contient meme pas de ref à id, je suppose que c'est les lignes juste au dessus ? ```ruby def create memberId = User.where(username: params[:membership][:username])[0].id teamId = Team.where(name: params[:membership][:team_name])[0].id ``` Tu as essayé de le debug avec un coup de binding.pry en première ligne du create ? Comme ça tu pourrais inspecter le contenu de la bdd (qui devrait normalement contenir tes fixtures)
Author
Owner

Alors oui en effet, l'erreur concerne en fait la ligne 14. J'ai enlevé des trucs superflus sans doute dans le dernier commit. (Je mets à jour le premier message)\
Pry ne m'a pas apporté plus de réponse que j'en avais déjà, à savoir que ce qui semble ne pas fonctionner c'est bien les deux lignes que tu pointes ... qui pourtant fonctionne tout de même très bien en conditions réelles ! C'est uniquement les specs qui sont pétées. Je m'y remets demain pour approfondir ça.

Alors oui en effet, l'erreur concerne en fait la ligne 14. J'ai enlevé des trucs superflus sans doute dans le dernier commit. (Je mets à jour le premier message)\ Pry ne m'a pas apporté plus de réponse que j'en avais déjà, à savoir que ce qui semble ne pas fonctionner c'est bien les deux lignes que tu pointes ... qui pourtant fonctionne tout de même très bien en conditions réelles ! C'est uniquement les specs qui sont pétées. Je m'y remets demain pour approfondir ça.
Owner

J'essayerai peut-être de debug ça dans le WE 🤷

J'essayerai peut-être de debug ça dans le WE :shrug:
Lou closed this issue 2022-02-20 22:25:55 +01:00
Author
Owner

Problème résolu en implémentant des nested resources pour les membership, de la même sorte que pour les tasks. Je ne sais plus pourquoi je ne voulais pas faire ça de cette manière lors du développement initial de Chronobriq.

Problème résolu en implémentant des nested resources pour les `membership`, de la même sorte que pour les `tasks`. Je ne sais plus pourquoi je ne voulais pas faire ça de cette manière lors du développement initial de Chronobriq.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cli/Chronobriq-API#5
No description provided.