「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ロギングおよびメモリ内操作のためにGOでファイルシステムをmock笑する方法は?

ロギングおよびメモリ内操作のためにGOでファイルシステムをmock笑する方法は?

2025-03-23に投稿されました
ブラウズ:300

How to Mock the File System in Go for Logging and In-Memory Operations?

go

fileシステムを理解する質問:ログファイル操作に移動するには、ファイルシステムをmockまたは抽象化し、潜在的にメモリーファイルを作成する方法System?

回答:

をgoでファイルシステムをmockまたは抽象化するには、ファイルおよびファイルシステム操作のインターフェイスを定義することができます。 Open(名前文字列)(ファイル、エラー) stat(name string)(os.fileinfo、エラー) } ファイルインターフェイスを入力{ io.closer io.reader io.readerat io.seeker stat()(os.fileinfo、エラー) }

ローカルディスクを使用してデフォルトのファイルシステムの実装を作成します:

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)
}

カスタムコードを使用してファイルシステムインターフェイスを実装してください:

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) }

ファイルシステムの引数を受け入れるようにコードを変更する:

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
}

カスタムファイルシステムの実装を注入することにより、ファイル操作をログにして、ファイルおよびファイルシステムインターフェイスを適切に実装して、インメモリーファイルシステムを作成できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3