ass даёт одну функцию и делает одну задачу: проверить ошибку. Никаких конструкций вроде assert.NoError(t, err) или require.ErrorIs(t, err, ErrSomething).ass даёт единственный метод ass.Err(t, ...), который умеет сравнивать ошибки несколькими способами сразу. Не нужно выбирать между ErrorIs, ErrorAs и строковым сравнением. Метод сам разберётся, что имеется в виду, по типу второго аргумента.Автор назвал это удачно: вызов выглядит как
assErrt, что читается почти как assertEqual для ошибок. И да, писать ass на 50% короче, чем assert.Устанавливаем как обычный Go-модуль:
go get github.com/Thiht/ass
Дальше в тестах:
err := f()
// Ошибки нет — проверяем на nil или пустую строку
ass.Err(t, err, nil)
ass.Err(t, err, "")
// Подстрока в тексте ошибки
ass.Err(t, err, "an error occurred")
// errors.Is — сравнение по значению
ass.Err(t, err, ErrValue)
// errors.As — сравнение по типу
ass.Err(t, err, reflect.TypeOf(&ErrType{}))
Один метод покрывает четыре разных сценария. Особенно удобно при табличных тестах, где нужно гонять один и тот же вызов с разными входными данными и ожидаемыми ошибками.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
#GoToProduction
