Comprendre le système de fichiers Mocking dans Go
Question: Comment puis-je moquer ou abstraire le système de fichiers dans GO aux opérations de fichiers logarithmiques et créer potentiellement un fichier en mémoire System?
Réponse:
Pour moquer ou résumer le système de fichiers dans Go, vous pouvez tirer parti de l'approche suivante:
Définir les interfaces de fichiers et les opérations du système de fichiers:
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) }
Créez une implémentation du système de fichiers par défaut à l'aide du disque local:
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) }
Implémentez l'interface du système de fichiers à l'aide de votre code personnalisé:
type myFS struct { // Custom file system implementation } func (myFS) Open(name string) (file, error) { // Custom implementation for opening a file // Log the file operation fmt.Printf("Opened file: %s\n", name) // Return a mock file object return &mockFile{}, nil } func (myFS) Stat(name string) (os.FileInfo, error) { // Custom implementation for getting file info // Log the file operation fmt.Printf("Get file info: %s\n", name) // Return mock file info return &os.FileInfo{}, nil }
Modifiez votre code pour accepter un argument du système de fichiers:
func myFunc(fs fileSystem) { f, err := fs.Open("myfile.txt") if err != nil { fmt.Println(err) return } // Perform file operations using the mocked file object }
En injectant l'implémentation de votre système de fichiers personnalisé, vous pouvez enregistrer les opérations de fichiers et créer un système de fichiers en mémoire en implémentant les interfaces de fichiers et de fichiers de manière appropriée.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3