Cara Mengabstrak dan Mengejek Sistem Fail dalam Go
Untuk pengelogan komprehensif operasi baca dan tulis dalam aplikasi Go anda, atau penggantian lengkap daripada sistem fail dengan alternatif dalam memori, anda boleh memanfaatkan perkara berikut teknik:
Abstraksi
Untuk mengabstraksikan sistem fail, tentukan antara muka yang mewakili operasi terasnya:
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) }
Pelaksanaan osFS bagi failSystem berfungsi dengan orang tempatan cakera:
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) }
Penggunaan
Untuk menggunakan sistem fail yang diabstrak, hantarkan contoh Sistem fail kepada kod anda:
func MyFunc(fs fileSystem) { // Use the fs instance for file operations }
Mengejek
Untuk mengejek sistem fail, laksanakan antara muka sistem fail dengan pelaksanaan tersuai yang menyediakan gelagat terkawal untuk ujian atau pengelogan:
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 }
Dengan menghantar MockFileSystem kepada kod anda, anda boleh mengesahkan dan mengawal operasi sistem fail yang digunakan semasa ujian.
Atas ialah kandungan terperinci Bagaimana untuk Abstrak dan Olok-olok Sistem Fail dalam Pergi untuk Pengujian dan Pembalakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!