Le remplissage des variables d'instance dans les tests rspec
J'ai une classe qui a de la suite de l'initialisation de la méthode.
def initialize(my_var)
@my_var = my_var
end
et je veux tester la méthode qui a ensuite fait quelque chose pour @my_var
def split
@my_var.split(",")
end
comment puis-je changer @my_var
avant de tester, elle retourne un tableau correctement?
Est-ce possible sans avoir un accesseur pour @my_var
?
OriginalL'auteur Joseph Le Brech | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
Cela ne ressemble pas à une pratique correcte. Rspec devrait tester le comportement de l'interface de vos classes et modèles - pas la mise en œuvre interne (dont les variables d'instance sont sans aucun doute). Il y a des façons de le faire, mais vous êtes sûr que vous ne voulez pas avoir un accesseur pour cette variable?
De toute façon, vous pouvez utiliser
my_object.instance_variable_get("@my_var")
etmy_object.instance_variable_set("@my_var", value)
pour manipuler la variable.File
et écrire les attendus des données traitées à partir de ce fichier, sans avoir besoin d'un fichier à l'appui de mes tests. Je peux ensuite sauter la méthode initialize pour tester d'autres méthodes de ma classe.vous pouvez également essayer d'utiliser StringIO au lieu de fichier
OriginalL'auteur PinnyM