Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk mengejek Sistem Fail untuk Ujian Unit di Golang?

Bagaimana untuk mengejek Sistem Fail untuk Ujian Unit di Golang?

Susan Sarandon
Lepaskan: 2024-12-27 11:09:11
asal
348 orang telah melayarinya

How to Mock the Filesystem for Unit Testing in Golang?

Contoh Kod untuk Menguji Sistem Fail di Golang

Sistem fail ialah komponen penting bagi mana-mana aplikasi yang mengendalikan data berasaskan fail. Untuk memastikan kelakuan yang betul bagi operasi sistem fail, ujian unit memainkan peranan yang penting. Golang menyediakan mekanisme untuk mengejek sistem fail semasa ujian, membolehkan pembangun mengasingkan gelagat kod mereka daripada sistem fail sebenar.

Untuk mengejek sistem fail, anda boleh mencipta antara muka yang mewakili operasi sistem fail. Antara muka ini kemudiannya boleh dilaksanakan oleh sistem fail palsu yang mengembalikan respons terkawal semasa ujian.

Berikut ialah contoh antara muka sedemikian:

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)
}
Salin selepas log masuk

Untuk menggunakan antara muka ini dalam ujian, anda boleh mencipta sistem fail olok-olok yang melaksanakan antara muka sistem fail:

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
}
Salin selepas log masuk

Sistem fail olok-olok ini boleh digunakan untuk mengawal tingkah laku sistem fail semasa ujian dengan menetapkan medan ralat dan failInfo.

Berikut ialah contoh fungsi ujian yang menggunakan sistem fail olok-olok:

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)
    }
}
Salin selepas log masuk

Dalam fungsi ujian, sistem fail asal disimpan dan digantikan dengan sistem fail olok-olok. Sistem fail olok-olok dikonfigurasikan untuk mengembalikan fail dengan saiz 123. Ujian kemudian memanggil fungsi getSize, yang dijangka mengembalikan saiz fail. Ujian lulus jika fungsi getSize mengembalikan saiz yang betul dan tiada ralat.

Atas ialah kandungan terperinci Bagaimana untuk mengejek Sistem Fail untuk Ujian Unit di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan