context в юнит-тестахt.Context() — основной способ (Go 1.24+):func TestFetch(t *testing.T) {
result, err := Fetch(t.Context(), "https://example.com")
// ...
}Контекст автоматически отменяется при завершении теста, в том числе по
go test -timeout. Не нужен ни defer cancel(), ни ручной WithTimeout.Явный таймаут — когда тестируете временно́е поведение:
ctx, cancel := context.WithTimeout(t.Context(), 500*time.Millisecond)
defer cancel()
Базовый контекст —
t.Context(), не context.Background(). Так контекст остаётся привязан к жизненному циклу теста.🐸 Библиотека Go для собеса