Maison > développement back-end > Golang > Comment se moquer efficacement du système de fichiers pour les tests unitaires en Go ?

Comment se moquer efficacement du système de fichiers pour les tests unitaires en Go ?

DDD
Libérer: 2025-01-04 15:53:43
original
127 Les gens l'ont consulté

How to Effectively Mock the Filesystem for Unit Testing in Go?

Test simulé du système de fichiers dans Go

Introduction

Le code de test unitaire qui interagit avec le système de fichiers nécessite de se moquer du système de fichiers pour isoler les tests du fichier réel opérations du système. Cet article fournit un exemple d'utilisation d'une interface et de types simulés pour tester efficacement les fonctions d'interaction avec le système de fichiers dans Go.

Interface du système de fichiers simulée

La solution fournie utilise une interface, fileSystem, pour représenter les opérations du système de fichiers. . L'implémentation concrète, osFS, gère les opérations réelles sur les fichiers en production. Pour tester du code qui repose sur osFS, nous devons créer une version simulée, mockedFS, qui hérite de fileSystem mais contrôle le comportement des opérations sur les fichiers pendant le test.

Mocking os.FileInfo

Pour se moquer l'interface os.FileInfo renvoyée par fs.Stat(), nous créons un type mockedFileInfo qui intègre os.FileInfo et remplace les méthodes requises. Cela nous permet de contrôler la taille rapportée par Stat().

Configuration du système de fichiers simulé

Pour tester le code à l'aide du système de fichiers simulé, nous remplaçons temporairement la variable globale fs par une instance de mockedFS . Cela intercepte efficacement toutes les opérations du système de fichiers effectuées par la fonction testée.

Exemple de test

L'exemple de fonction fourni, getSize(), renvoie la taille d'un fichier ou une erreur si Stat() échoue. Pour tester pleinement cette fonction, nous utilisons mockedFS pour contrôler le comportement de Stat() :

  • Cas d'erreur : Définissez mockedFS.reportErr sur true pour simuler un échec dans Stat() .
  • Cas de taille valide : Définissez mockedFS.reportErr sur false et spécifiez une taille pour mockedFS.reportSize.

Les cas de test vérifient que la fonction gère correctement à la fois les scénarios d'erreur et de réussite.

Conclusion

En utilisant une interface et des types simulés , nous pouvons facilement nous moquer du système de fichiers lors des tests unitaires dans Go. Cela nous permet d'isoler le code testé des dépendances externes et de garantir des résultats de tests fiables.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal