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) }
この解決策を使用するには:
アプリケーション コードでは、os パッケージを直接使用するのではなく、ファイル システム インターフェイスとして fs 変数を使用する必要があります。これにより、必要に応じてファイルシステムを簡単にモックしたり置き換えたりすることができます。
以上がテストと柔軟性のために Go でファイルシステムをモックまたは抽象化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。