Maison > développement back-end > Golang > Comment puis-je simuler ou extraire le système de fichiers dans Go à des fins de test et de flexibilité ?

Comment puis-je simuler ou extraire le système de fichiers dans Go à des fins de test et de flexibilité ?

Susan Sarandon
Libérer: 2024-12-02 03:48:12
original
345 Les gens l'ont consulté

How Can I Mock or Abstract the Filesystem in Go for Testing and Flexibility?

Mocking/Abstracting Filesystem in Go

Exigence :
L'objectif est de surveiller toutes les lectures du système de fichiers et écrit dans une application Go et remplace potentiellement le système de fichiers physique par un système de fichiers en mémoire alternative.

Solution :
Andrew Gerrand, le créateur de Go, propose une solution simple mais efficace :

var fs fileSystem = osFS{}

type fileSystem interface {
    Open(name string) (file, error)
    Stat(name string) (os.FileInfo, error)
}

type file interface {
    io.Closer
    io.Reader
    io.ReaderAt
    io.Seeker
    Stat() (os.FileInfo, error)
}

// osFS implements fileSystem using the local disk.
type osFS struct{}

func (osFS) Open(name string) (file, error)        { return os.Open(name) }
func (osFS) Stat(name string) (os.FileInfo, error) { return os.Stat(name) }
Copier après la connexion

Pour utiliser cette solution :

  • Définir un système de fichiers d'interface qui définit les opérations de base du système de fichiers.
  • Implémenter un système de fichiers pour le disque local (osFS) ou tout système de fichiers personnalisé en mémoire.
  • Attribuez l'implémentation du système de fichiers choisi à la variable globale fs.

Votre code d'application doit utiliser la variable fs comme l'interface du système de fichiers au lieu d'utiliser directement le package os. Cela vous permet de facilement simuler ou remplacer le système de fichiers selon vos besoins.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal