Attualmente sto riflettendo su come scrivere test che controllino se un dato pezzo di codice è andato nel panico? So che Go usa recover
per prendere il panico, ma a differenza del codice Java, non puoi davvero specificare quale codice dovrebbe essere saltato in caso di panico o cosa hai. Quindi se ho una funzione:
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")
}
Non posso davvero dire se OtherFunctionThatPanics
siamo stati presi dal panico e ci siamo ripresi, o se la funzione non è andata affatto nel panico. Come faccio a specificare quale codice saltare se non c'è panico e quale codice eseguire se c'è panico? Come posso verificare se c'è stato qualche panico da cui ci siamo ripresi?