Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Mengejek Panggilan Kaedah Struktur dalam Kes Ujian Go?
Panggilan Struktur Kaedah Mengejek dalam Kes Ujian Go
Dalam Go, tiada sokongan asli untuk panggilan kaedah mengejek bagi struct. Walau bagaimanapun, beberapa teknik boleh digunakan untuk mencapai kefungsian yang serupa.
Satu pendekatan adalah untuk mentakrifkan antara muka yang mewakili kaedah yang berkaitan bagi struct dan mencipta pelaksanaan olok-olok bagi antara muka tersebut. Pelaksanaan olok-olok ini kemudiannya boleh disuntik ke dalam kes ujian sebagai ganti struct sebenar.
Pertimbangkan contoh kod berikut:
type A struct {} func (a *A) perform(url string){ // ... }
Untuk menguji fungsi invoke() yang menggunakan perform ini () kaedah, pelaksanaan olok-olok struct A boleh dibuat:
type AMock struct { PerformFunc func(url string) } func (m *AMock) perform(url string) { if m.PerformFunc != nil { m.PerformFunc(url) } }
Dalam kes ujian, olok-olok boleh disuntik ke dalam fungsi invoke():
func TestInvoke(t *testing.T) { mock := &AMock{} mock.PerformFunc = func(url string) { // Test logic for mock behavior } invoke(mock, "example.com") }
Dengan menetapkan medan PerformFunc pada olok-olok, tingkah laku kaedah yang diejek boleh dikawal dan ditegaskan dalam ujian.
Satu lagi pendekatan untuk mengejek melibatkan penggunaan rangka kerja suntikan pergantungan yang menyokong ejekan. Ini membolehkan keupayaan mengejek yang lebih fleksibel dan serba boleh, tetapi memerlukan konfigurasi dan persediaan tambahan.
Akhirnya, kaedah yang paling sesuai untuk mengejek bergantung pada keperluan dan kekangan khusus kes ujian dan aplikasi yang sedang dibangunkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Panggilan Kaedah Struktur dalam Kes Ujian Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!