Comment puis-je me débarrasser de @contrôleur est nul d'erreur dans mes tests
Je reçois
@controller is nil: make sure you set it in your test's setup method.
Quand je lance mes tests. Toute idée de ce que cela signifie?
Vous devez vous connecter pour publier un commentaire.
lorsque vous héritez de ActionController::TestCase, il déduit le nom du contrôleur à partir du nom du test si elles ne correspondent pas, vous devez utiliser le
setup
partie du test pour le régler.Donc si vous avez
Puis
@controller
est auto instancié àPostsController
, cependant, si ce n'était pas le cas et que vous aviez un nom différent, vous avez besoin d'unesetup
en tant que telApi::
, alors vos tests et la structure des fichiers doivent inclure le module ainsi:test/controllers/api/posts_controller.rb
etApi::PostsController < ActionController::TestCase
J'ai été dans le processus de mise à jour rspec 3 de la version bêta sur rails 4 et a couru dans cette erreur. Le problème s'est avéré être que notre Contrôleur spec décrire les états utilisaient des symboles à la place de chaînes de caractères. Rspec a été de tenter d'instancier le symbole de la manette, mais ils étaient en fait des "actions".
ErsatzRyan réponse est correcte, mais il y a une petite faute de frappe. Au lieu de
il devrait être
sinon vous aurez une erreur: undefined method `response_body='
Si les noms de match, et le @contrôleur variable est toujours nul, essayez de vérifier pour les erreurs dans le contrôleur de l'instanciation. Pour moi, j'avais un contrôleur de la méthode initialize qui avait un bug. Pour une raison quelconque, le contrôleur était juste nul dans le test, plutôt que de jeter une erreur lorsqu'il n'est pas instancié.
Ou, vous pouvez simplement faire ceci:
Vérifier si vous êtes à la fin de la faire et à la fin correctement.