Подняли тестовую БД, создали временный файл или запустили сервер? t.Cleanup позволяет привязать очистку прямо к жизненному циклу теста.
🟡 Главный плюс — хелперы могут сами отвечать за освобождение ресурсов:
func newTestDB(t *testing.T) *sql.DB {
t.Helper()
db := openTempDB(t)
t.Cleanup(func() {
db.Close()
})
return db
}
🟡 Теперь тесту не нужно помнить про defer:
func TestUsers(t *testing.T) {
db := newTestDB(t)
// ...
}
Cleanup выполнится после завершения теста, даже если тот упал через t.Fatal. Несколько cleanup-функций выполняются в обратном порядке регистрации.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction