Ответ
Интеграционные тесты проверяют взаимодействие между несколькими компонентами системы. Они отличаются от юнит-тестов тем, что тестируют не изолированные модули, а их совместную работу, включая внешние зависимости (БД, API и т.д.).
Пример в Go с тестированием HTTP-обработчика и БД:
func TestUserHandler(t *testing.T) {
db := setupTestDB() // тестовая БД
defer db.Close()
handler := NewUserHandler(db)
server := httptest.NewServer(handler)
defer server.Close()
resp, err := http.Get(server.URL + "/users/1")
if err != nil {
t.Fatal(err)
}
if resp.StatusCode != http.StatusOK {
t.Errorf("expected 200, got %d", resp.StatusCode)
}
// проверка тела ответа...
}
Ключевые особенности:
- Тестируют взаимодействие компонентов
- Требуют настройки тестового окружения
- Медленнее юнит-тестов
- Часто используют тестовые двойники (mock, stub) для внешних сервисов
Видео-ответы
▶
▶
▶
▶
▶
▶
▶