web-dev-qa-db-fra.com

Que signifie le stubbing dans la programmation?

J'entends souvent le terme "talon", "bout de quelque chose", "talons", etc.

Que signifie le stubbing dans la programmation et d'où vient la Parole? Dans quels contextes peut-il être utilisé?

26
Wazery

Une méthode stub est une méthode qui renvoie simplement un résultat simple mais valide (mais pas nécessairement correct).

Ils sont généralement réalisés lors de la construction de l'infrastructure et vous ne voulez pas passer du temps sur toutes les méthodes nécessaires pour le moment. Au lieu de cela, vous créez des stubs pour que tout se compile et que la saisie automatique de votre IDE connaisse les méthodes que vous prévoyez d'utiliser.

Un autre endroit où les stubs sont utilisés est la moquerie lors des tests.Vous fournissez des méthodes de stub au lieu de la dépendance normale via l'injection de dépendances qui renvoie des résultats fixes, puis assurez-vous que le code fait la bonne chose avec eux. Cela isole les tests du code que vous essayez de tester et signifie que vous n'avez pas besoin de faire tourner une base de données juste pour exécuter ces tests.

31
ratchet freak

Il vaut peut-être mieux y répondre par un exemple concret. Prenons le cas où vous créez une application de bureau. Vous avez décidé d'avoir une fonction nommée createMenubar, createToolbar et createMain pour que votre constructeur d'application soit net et bien rangé.

Votre code principal ressemblera à ceci (cet exemple est en python):

class ExampleApp():
    def __init__(self):
        self.createMenubar()
        self.createToolbar()
        self.createMain()

Tant que tout ne fonctionnera pas, votre fonction principale échouera, alors comment tester votre application pendant le développement? Par exemple, si vous commencez à travailler sur createMenubar, l'initialisation échouera après avoir créé la barre de menu car vous n'avez pas implémenté la barre d'outils ou la zone principale de l'interface graphique.

C'est là que les stubs entrent en jeu. Vous pouvez créer une fonction nommée createToolbar et createMain qui satisfont aux exigences du constructeur de l'application (à savoir, que ces fonctions existent), sans avoir à les implémenter. Ces fonctions sont des talons:

def createToolbar():
    pass

def createMain():
    pass

Avec ces stubs en place, vous pouvez commencer à implémenter le programme principal et la barre de menus, sans avoir à vous soucier des détails de la barre d'outils ou de la partie principale du programme. Finalement, vous passerez à la barre d'outils et remplacerez le talon par la fonction réelle. Et enfin, vous allez supprimer le talon de createMain et lui donner une véritable implémentation.

Notez que les talons n'ont pas nécessairement à ne rien faire. Ces stub peuvent, par exemple, créer un widget conteneur vide que le constructeur de l'application peut disposer. Le fait est que vous créez des fonctions ou des objets factices qui font juste assez pour laisser votre autre code s'exécuter pendant que vous le développez. Au fil du temps, vous remplacez les talons un par un jusqu'à ce que votre demande soit terminée.

6
Bryan Oakley

Un "stub" est utilisé dans la programmation "top down". C'est à ce moment que vous construisez votre application du général au particulier. Ce faisant, vous utiliserez des "stubs" comme "espaces réservés" pour les applications spécifiques que vous n'avez pas eu le temps de créer. Ils retournent souvent des éléments comme des valeurs fictives ou aléatoires à la partie plus générale du programme. C'est bien, le talon nourrit suffisamment de valeur pour faire fonctionner la partie la plus "senior" du programme. Jusqu'à ce qu'il soit temps que le talon soit remplacé ou équipé de son véritable calcul ou valeur.

2
Tom Au