No momento, estou pensando em como escrever testes que verificam se um determinado trecho de código entrou em pânico. Eu sei que Go recover
costuma pegar pânico, mas ao contrário, digamos, do código Java, você não pode realmente especificar qual código deve ser ignorado em caso de pânico ou o que quer que seja. Então, se eu tiver uma função:
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")
}
Não sei dizer se OtherFunctionThatPanics
entramos em pânico e nos recuperamos ou se a função não entrou em pânico. Como especifico qual código ignorar se não houver pânico e qual código executar se houver pânico? Como posso verificar se houve algum pânico do qual nos recuperamos?