Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Berkesan?

Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Berkesan?

Linda Hamilton
Lepaskan: 2024-12-25 03:55:17
asal
293 orang telah melayarinya

How Can I Mock Imported Functions in Go for Effective Testing?

Ejek Separa untuk Fungsi yang Diimport

Dalam Go, menguji fungsi yang bergantung pada fungsi yang diimport daripada pakej luaran boleh menjadi mencabar. Pertimbangkan contoh berikut:

import x.y.z

func abc() {
    ...
    v := z.SomeFunc()
    ... 
}
Salin selepas log masuk

Bolehkah kita mengejek z.SomeFunc() dalam Go?

Memfaktorkan Semula untuk Mengejek

Ya, dengan pengubahsuaian kod mudah. Dengan memperkenalkan pembolehubah ditaip fungsi zSomeFunc dan memulakannya dengan z.SomeFunc, kod pakej boleh memanggil pembolehubah ini dan bukannya z.SomeFunc(). Ini membolehkan kami mengejek fungsi yang diimport semasa ujian.

var zSomeFunc = z.SomeFunc

func abc() {
    ...
    v := zSomeFunc()
    ...
}
Salin selepas log masuk

Mengejek dalam Ujian

Dalam ujian, kami boleh menetapkan fungsi tersuai kepada zSomeFunc yang berkelakuan seperti yang diperlukan untuk ujian.

func TestAbc(t *testing.T) {
    // Save current function and restore at the end:
    old := zSomeFunc
    defer func() { zSomeFunc = old }()

    zSomeFunc = func() int {
        // This will be called, do whatever you want to,
        // return whatever you want to
        return 1
    }

    // Call the tested function
    abc()

    // Check expected behavior
}
Salin selepas log masuk

Dengan memfaktorkan semula kod, kami boleh mengejek fungsi yang diimport dan menguji kesannya pada kod kami dengan lebih berkesan. Teknik ini amat berguna apabila menguji kebergantungan pihak ketiga atau mengasingkan bahagian fungsi tertentu untuk ujian disasarkan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Berkesan?. 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