ホームページ > バックエンド開発 > Golang > テストと柔軟性のために Go でファイルシステムをモックまたは抽象化するにはどうすればよいですか?

テストと柔軟性のために Go でファイルシステムをモックまたは抽象化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-02 03:48:12
オリジナル
344 人が閲覧しました

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

Go でのファイルシステムのモック/抽象化

要件:
目標は、すべてのファイル システムの読み取りを監視することですGo アプリケーションに書き込み、物理ファイルシステムをメモリ内ファイルシステムに置き換える可能性があります。

解決策:
Go の作成者である Andrew Gerand は、シンプルかつ効果的な解決策を提供しています:

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) }
ログイン後にコピー

この解決策を使用するには:

  • 基本的なファイル システムを定義するインターフェイス fileSystem を定義します。操作。
  • ローカル ディスク (osFS) またはカスタムのメモリ内ファイル システムに fileSystem を実装します。
  • 選択した fileSystem 実装をグローバル fs 変数に割り当てます。

アプリケーション コードでは、os パッケージを直接使用するのではなく、ファイル システム インターフェイスとして fs 変数を使用する必要があります。これにより、必要に応じてファイルシステムを簡単にモックしたり置き換えたりすることができます。

以上がテストと柔軟性のために Go でファイルシステムをモックまたは抽象化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート