Menguji Koleksi Fungsi dengan Refleksi dalam Go
Untuk menangani keperluan untuk menguji fungsi secara cekap dengan tandatangan yang serupa dan nilai pulangan, refleksi menyediakan penyelesaian yang berkuasa. Dalam Go, pakej reflect menawarkan fungsi yang membolehkan anda memeriksa dan memanipulasi nilai, jenis dan fungsi pada masa jalan.
Untuk senario yang diberikan, di mana berbilang fungsi perlu diuji dengan keadaan yang serupa, refleksi memberi kuasa kepada anda untuk tulis satu ujian. Ujian ini akan melibatkan langkah-langkah berikut:
Berikut ialah petikan daripada kod ujian yang menunjukkan pendekatan yang diterangkan:
<code class="go">func TestFunc(t *testing.T) { stype := reflect.ValueOf(s) for _, fname := range funcNames { sfunc := stype.MethodByName(fname) ret := sfunc.Call([]reflect.Value{}) val := ret[0].Int() err := ret[1] if val < 1 { t.Error(fname + " should return positive value") } if err.IsNil() == false { t.Error(fname + " shouldn't err") } } }</code>
Ujian ini akan berulang melalui sekeping fungsi nama, cari setiap fungsi mengikut nama, panggilnya, dan tegaskan nilai pulangan, memastikan setiap fungsi memenuhi syarat ujian yang ditentukan. Ambil perhatian bahawa jika fungsi dengan nama yang ditentukan tidak wujud, ujian akan panik. Untuk mengendalikan kes ini dengan baik, pertimbangkan untuk menambah kenyataan penangguhan untuk pulih daripada sebarang panik.
Melalui pendekatan ini, anda boleh menulis satu ujian dengan cekap untuk mengesahkan berbilang fungsi dengan tandatangan yang serupa dan nilai pulangan, memanfaatkan kuasa dan fleksibiliti refleksi dalam Go.
Atas ialah kandungan terperinci Bagaimanakah Refleksi Memudahkan Menguji Berbilang Fungsi dengan Tandatangan Serupa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!