Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menguji Panik dengan Berkesan dalam Ujian Unit Go?
Apabila menulis ujian unit dalam Go, selalunya perlu untuk mengesahkan bahawa laluan kod tertentu mencetuskan panik. Walaupun Go menyediakan mekanisme yang dipanggil pulih untuk mengendalikan panik, ia tidak menawarkan sokongan langsung untuk menentukan cara melangkau atau melaksanakan kod secara khusus sekiranya berlaku panik.
Untuk mengatasi had ini, kami boleh menggunakan kehalusan ujian itu tidak mentakrifkan konsep kejayaan, tetapi hanya kegagalan. Dengan mengambil kesempatan daripada ini, kami boleh menstrukturkan ujian kami seperti berikut:
func TestPanic(t *testing.T) { defer func() { if r := recover(); r == nil { t.Errorf("The code did not panic") } }() // The following is the code under test OtherFunctionThatPanics() }
Dalam contoh ini, jika OtherFunctionThatPanics tidak panik, fungsi pulih akan kembali sifar, dan ujian akan gagal disebabkan panggilan kepada t.Errorf. Jika panik berlaku, pulih akan menangkapnya dan ujian akan lulus.
Sebagai alternatif, kita boleh mencipta fungsi pembantu untuk mengabstrak logik penyemakan panik:
func assertPanic(t *testing.T, f func()) { defer func() { if r := recover(); r == nil { t.Errorf("The code did not panic") } }() f() } func TestPanic(t *testing.T) { assertPanic(t, OtherFunctionThatPanics) }
Ini pendekatan menyediakan cara yang ringkas dan boleh diguna semula untuk mengendalikan ujian panik dalam Go.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Panik dengan Berkesan dalam Ujian Unit Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!