Actualmente estoy pensando en cómo escribir pruebas que comprueben si un fragmento de código dado entró en pánico. Sé que Go recover
suele atrapar el pánico, pero a diferencia de, digamos, el código Java, realmente no se puede especificar qué código se debe omitir en caso de pánico o lo que sea. Entonces, si tengo una función:
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")
}
Realmente no puedo decir si OtherFunctionThatPanics
entró en pánico y nos recuperamos, o si la función no entró en pánico en absoluto. ¿Cómo especifico qué código omitir si no hay pánico y qué código ejecutar si hay pánico? ¿Cómo puedo comprobar si hubo algún pánico del que nos recuperamos?