Je me demande actuellement comment écrire des tests qui vérifient si un morceau de code donné a paniqué? Je sais que Go utilise recover
pour attraper les paniques, mais contrairement au code Java, vous ne pouvez pas vraiment spécifier quel code doit être ignoré en cas de panique ou ce que vous avez. Donc si j'ai une fonction:
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")
}
Je ne peux pas vraiment dire si OtherFunctionThatPanics
nous avons paniqué et nous avons récupéré, ou si la fonction n'a pas paniqué du tout. Comment spécifier le code à ignorer s'il n'y a pas de panique et quel code exécuter en cas de panique? Comment puis-je vérifier si nous nous sommes remis de la panique?