Mengejek Fungsi Luar dalam Go
Apabila menguji fungsi yang bergantung pada pakej luaran, mengejek fungsi luaran tersebut boleh menjadi penting untuk mencipta terpencil dan boleh dipercayai ujian. Pertimbangkan contoh berikut:
import x.y.z func abc() { ... v := z.SomeFunc() ... }
Bolehkah kita mengejek z.SomeFunc() untuk menguji unit abc()?
Penyelesaian: Pemfaktoran Semula dan Mengejek
Ya, mengejek z.SomeFunc() boleh dilakukan dengan pemfaktoran semula yang mudah. Memperkenalkan pembolehubah zSomeFunc jenis fungsi dan mulakannya dengan z.SomeFunc. Kemudian, dalam fungsi anda yang memanggil z.SomeFunc(), gunakan zSomeFunc() sebaliknya:
var zSomeFunc = z.SomeFunc func abc() { // ... v := zSomeFunc() // ... }
Semasa ujian, tetapkan fungsi tersuai kepada zSomeFunc yang mengembalikan gelagat ujian yang diingini. Contohnya:
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 }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Fungsi Luar dalam Go untuk Ujian Unit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!