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.
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.
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().
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.
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() :
Les cas de test vérifient que la fonction gère correctement à la fois les scénarios d'erreur et de réussite.
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!