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
Susan Sarandonasal
2024-12-27 11:09:11345semak imbas

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)
}

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
}

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)
    }
}

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!

Kenyataan:
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