Go에서 파일 시스템을 추상화하고 모의하는 방법
Go 애플리케이션에서 읽기 및 쓰기 작업에 대한 포괄적인 로깅 또는 전체 대체 메모리 내 대안을 갖춘 파일 시스템의 경우 다음을 활용할 수 있습니다. 기술:
추상
파일 시스템을 추상화하려면 핵심 작업을 나타내는 인터페이스를 정의합니다.
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 구현이 작동합니다. 현지인과 함께 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 인스턴스를 코드에 전달합니다.
func MyFunc(fs fileSystem) { // Use the fs instance for file operations }
모의
파일 시스템을 모의하려면 다음을 구현하세요. 테스트 또는 로깅을 위한 제어된 동작을 제공하는 사용자 정의 구현이 포함된 fileSystem 인터페이스:
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 }
MockFileSystem을 코드에 전달하면 테스트 중에 호출된 파일 시스템 작업을 확인하고 제어할 수 있습니다.
위 내용은 테스트 및 로깅을 위해 Go에서 파일 시스템을 추상화하고 모의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!