Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Berkesan?
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() ... }
Bolehkah kita mengejek z.SomeFunc() dalam Go?
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() ... }
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 }
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!