В настоящее время я размышляю, как написать тесты, которые проверяют, запаниковал ли данный фрагмент кода? Я знаю, что Go использует recover
для отлова паники, но, в отличие, скажем, от Java-кода, вы не можете точно указать, какой код следует пропускать в случае паники или что у вас есть. Итак, если у меня есть функция:
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")
}
Я не могу точно сказать, OtherFunctionThatPanics
запаниковали, и мы выздоровели, или функция вообще не паниковала. Как мне указать, какой код пропустить, если паники нет, и какой код выполнить в случае паники? Как я могу проверить, не оправились ли мы от паники?