RoR et RSpec: Comment contrôleur d'accès aux variables d'instance, sans définir des accesseurs?
Je suis en train d'écrire un rspec tests pour mon contrôleur et je ne trouve pas de solution à la suite de problème.
Pour l'un des cas limites de tests, j'ai besoin de vérifier la valeur d'une variable d'instance.
Comment puis-je y accéder sans avoir à définir l'accesseur?
Par défaut, l'habitude:
controller.variable.should == '3.15'
ne fonctionne pas.
Définition
attr_reader :variable
juste pour faire les tests passent serait ridicule et
je suis sûr qu'il est plus intelligent manière.
Vous devez vous connecter pour publier un commentaire.
si vous vous retrouver à faire cela, vous voudrez peut-être repenser votre approche pour se cacher de l'information, de sorte que vous testez essentiel de comportement plutôt que d'accessoires détails de mise en œuvre. Vos tests devraient veiller à ce que la "chose" fonctions comme il se doit, sans être trop étroitement lié à la mise en oeuvre particulière.
EDIT: N'est-ce pas
assigns(:var)
les rails test de magie pour faire la même chose avec les contrôleurs?assigns
(c'est une méthode gratuite, pascontroller.assigns
), commeinstance_variable_get
pouvez avoir plus de restrictions queassigns
. Par exemple:'event' is not allowed as an instance variable name
, maisassigns
détecte@event
sans aucun problème.controller.instance_variable_get(:@var)
et ayants droit respectifs (var)assigns
méthode