Dans une application Go, il existe des fonctions getter définies dans des fichiers séparés pour différents services. Chaque fonction prend une connexion à la base de données et des paramètres SQL en entrée et renvoie des données structurées ou une erreur. Le problème survient lorsque l'on tente de se moquer de ces fonctions à partir du package principal.
Méthode 1 : se moquer des valeurs de fonction
Dans Go, il n'est pas possible de se moquer directement des fonctions. Cependant, vous pouvez simuler les valeurs de fonction, qui incluent des variables, des champs sur des structures et des paramètres de fonction. Pour ce faire, définissez la fonction comme variable ou transmettez-la comme paramètre à une autre fonction.
Méthode 2 : Utiliser les interfaces
Une approche privilégiée consiste à simuler les interfaces . Définissez une interface qui représente la fonctionnalité des fonctions getter et implémentez une version réelle et fictive de cette interface. Cela vous permet d'injecter l'implémentation fictive pendant les tests.
Méthode 3 : simulation de connexion à la base de données
Si les fonctions getter dépendent d'une connexion à la base de données, vous pouvez simuler la base de données type de connexion à la place. Définissez une interface qui imite les méthodes de connexion réelle à la base de données et implémentez une version fictive. Cela vous permet de transmettre la connexion fictive aux fonctions getter pendant les tests.
type ProductRepository interface { GetProductById(db DBIface, ID int) (p Product, err error) } type ProductStore struct{} func (ProductStore) GetProductById(db DBIface, ID int) (p Product, err error) { // Your original implementation } type ProductRepositoryMock struct{} func (ProductRepositoryMock) GetProductById(DB DBIface, ID int) (p Product, err error) { // Mock implementation }
Dans cet exemple, l'interface ProductRepository définit la fonction GetProductById. La structure ProductStore implémente l'interface en utilisant une véritable connexion à la base de données. La structure ProductRepositoryMock fournit une implémentation simulée pour les tests.
En utilisant des interfaces ou des valeurs de fonction fictives, vous pouvez réaliser une simulation dans Go sans modifier les déclarations de fonction d'origine, ce qui facilite les tests et l'isolation.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!