Golang でファイルシステムをテストするためのサンプル コード
ファイル システムは、ファイルベースのデータを処理するアプリケーションにとって不可欠なコンポーネントです。ファイルシステム操作の正しい動作を保証するには、単体テストが重要な役割を果たします。 Golang は、テスト中にファイル システムをモックするメカニズムを提供し、開発者がコードの動作を実際のファイル システムから分離できるようにします。
ファイル システムをモックするには、ファイル システムの操作を表すインターフェイスを作成できます。このインターフェイスは、テスト中に制御された応答を返すモック ファイル システムによって実装できます。
そのようなインターフェイスの例を次に示します:
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) }
テストでこのインターフェイスを使用するには、次のようにします。 fileSystem インターフェイスを実装するモック ファイル システムを作成できます:
type mockFileSystem struct { err error fileInfo os.FileInfo } func (m mockFileSystem) Open(name string) (file, error) { return nil, m.err } func (m mockFileSystem) Stat(name string) (os.FileInfo, error) { return m.fileInfo, m.err }
このモック ファイル システムは、テスト中にファイル システムの動作を制御するために使用できます。 error フィールドと fileInfo フィールドを設定します。
模擬ファイル システムを使用するテスト関数の例を次に示します。
func TestGetSize(t *testing.T) { oldFs := fs defer func() { fs = oldFs }() fs = mockFileSystem{fileInfo: &os.FileInfo{Size: 123}} size, err := getSize("hello.go") if err != nil { t.Errorf("Expected no error, got: %v", err) } if size != 123 { t.Errorf("Expected size %d, got: %d", 123, size) } }
テスト関数では、元のファイル システムが保存され、次のように置き換えられます。模擬ファイルシステム。モック ファイル システムは、サイズ 123 のファイルを返すように構成されています。次に、テストは getSize 関数を呼び出します。この関数はファイルのサイズを返すことが期待されます。 getSize 関数が正しいサイズを返し、エラーがなければ、テストは合格します。
以上がGolang で単体テスト用にファイルシステムをモックする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。