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 les tests et la journalisation ?

Mary-Kate Olsen
Libérer: 2024-12-11 03:11:10
original
617 Les gens l'ont consulté

How to Abstract and Mock the Filesystem in Go for Testing and Logging?

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)
}
Copier après la connexion

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) }
Copier après la connexion

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
}
Copier après la connexion

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
}
Copier après la connexion

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!

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