Je suis un développeur Java jouant avec Ruby, et je l'adore. J'ai compris que grâce aux installations de métaprogrammation de Ruby, mes tests unitaires deviennent beaucoup plus propres et je n'ai pas besoin de mauvais cadres de moquerie. J'ai une classe qui a besoin des services de la classe File
et dans mon test je ne veux pas toucher mon vrai système de fichiers. En Java, j'utiliserais un système de fichiers virtuel pour que les «coutures» soient plus faciles à transmettre, mais dans Ruby, c'est évidemment trop. Ce que j'arrive semble déjà vraiment sympa par rapport au monde Java. Dans ma classe en cours de test, j'ai un paramètre constructeur en option:Constructeurs moqueurs dans Ruby
def initialize(file_class=File)
Quand je dois ouvrir des fichiers dans ma classe, je peux alors faire ceci:
@file_class.open(filename)
Et l'appel est soit le vrai File-class, ou dans le cas de mon test d'unité, il va à une fausse-classe qui ne touche pas le système de fichiers. Je sais qu'il doit y avoir une meilleure façon de le faire avec la métaprogrammation?
Oui, je préfère ne pas simplement utiliser une bibliothèque se moquant du tout. En as-tu vraiment besoin en Ruby? – auramo
Je ne vois pas le besoin d'avoir une aversion pour une bibliothèque moqueuse. Mocha est juste en train de faire la métaprogrammation pour vous (c'est-à-dire les méthodes de remplacement, etc.) que vous demandez de faire manuellement. –
@BrianPhillips Comment vérifiez-vous que les méthodes stubbed ont été appelées –