Mengejek Fungsi Import dalam Kaedah Bergantung kepada Pakej
Apabila menulis ujian untuk kaedah yang bergantung pada fungsi yang diimport daripada pakej luaran, ejekan boleh menjadi perlu untuk mengasingkan ujian daripada pelaksanaan sebenar fungsi yang diimport. Dalam Go, ini boleh dicapai dengan pemfaktoran semula yang mudah.
Pertimbangkan kaedah berikut yang mengimport dan menggunakan fungsi daripada pakej x.y.z:
import x.y.z func abc() { ... v := z.SomeFunc() ... }
Untuk mengejek SomeFunc(), cipta pembolehubah zSomeFunc jenis fungsi, dimulakan dengan fungsi yang diimport:
var zSomeFunc = z.SomeFunc func abc() { ... v := zSomeFunc() ... }
Dalam ujian, anda boleh tetapkan fungsi berbeza kepada zSomeFunc, satu yang ditakrifkan dalam suite ujian itu sendiri, untuk memanipulasi tingkah laku seperti yang diingini:
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 }
Pendekatan ini membolehkan anda mengejek fungsi yang diimport daripada pakej lain dan mengawal kelakuannya semasa ujian, memudahkan pengasingan dan pengesahan kod anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi yang Diimport dalam Go untuk Ujian Unit Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!