Maison >développement back-end >Golang >Comment extraire et simuler le système de fichiers dans Go pour les tests et la journalisation ?
Comment extraire et simuler le système de fichiers dans Go
Pour une journalisation complète des opérations de lecture et d'écriture dans votre application Go, ou pour le remplacement complet du système de fichiers avec une alternative en mémoire, vous pouvez tirer parti des éléments suivants techniques :
Abstraction
Pour abstraire le système de fichiers, définissez une interface qui représente ses opérations principales :
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) }
L'implémentation osFS de fileSystem fonctionne avec les locaux 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) }
Utilisation
Pour utiliser le système de fichiers abstrait, transmettez une instance de fileSystem à votre code :
func MyFunc(fs fileSystem) { // Use the fs instance for file operations }
Mocking
Pour se moquer du système de fichiers, implémentez l'interface fileSystem avec une implémentation personnalisée qui fournit un comportement contrôlé pour test ou journalisation :
type MockFileSystem struct { openCalled int openArgs []string statCalled int statArgs []string } func (m *MockFileSystem) Open(name string) (file, error) { m.openCalled++ m.openArgs = append(m.openArgs, name) return nil, nil } func (m *MockFileSystem) Stat(name string) (os.FileInfo, error) { m.statCalled++ m.statArgs = append(m.statArgs, name) return nil, nil }
En transmettant le MockFileSystem à votre code, vous pouvez vérifier et contrôler les opérations du système de fichiers invoquées pendant les tests.
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!