Saat ini saya sedang memikirkan bagaimana menulis tes yang memeriksa apakah suatu kode panik? Saya tahu bahwa Go menggunakan recover
untuk menangkap kepanikan, tetapi tidak seperti kode Java, Anda tidak dapat benar-benar menentukan kode apa yang harus dilewati jika terjadi kepanikan atau apa yang Anda miliki. Jadi jika saya memiliki fungsi:
func f(t *testing.T) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
OtherFunctionThatPanics()
t.Errorf("The code did not panic")
}
Saya tidak bisa benar-benar tahu apakah OtherFunctionThatPanics
panik dan kami pulih, atau apakah fungsinya tidak panik sama sekali. Bagaimana cara menentukan kode mana yang harus dilewati jika tidak ada kepanikan dan kode mana yang harus dijalankan jika terjadi kepanikan? Bagaimana cara memeriksa apakah ada kepanikan yang kami pulihkan?