Sobes.tech
Назад к вопросам
Middle
8

Используешь ли моки в автотестах? Какие плюсы и минусы их использования?

Компании, где спрашивали
Mayflower

Ответ от нейросети

sobes.tech AI

Моки в автотестах используются для имитации поведения внешних зависимостей, таких как базы данных, API, сервисы и т.п. Это позволяет изолировать тестируемый компонент и проверить его логику без влияния внешних факторов.

Плюсы использования моков:

  • Ускоряют выполнение тестов, так как не требуют реальных вызовов к внешним системам.
  • Позволяют тестировать крайние случаи и ошибки, которые сложно воспроизвести на реальных сервисах.
  • Обеспечивают стабильность тестов, исключая нестабильность внешних сервисов.

Минусы:

  • Моки могут не отражать реальное поведение зависимостей, что ведёт к ложному чувству уверенности.
  • Требуют поддержки и обновления при изменении интерфейсов зависимостей.
  • Избыточное использование моков может привести к тестам, которые проверяют только заглушки, а не реальную интеграцию.

Пример на Go с использованием моков для HTTP клиента:

// Интерфейс клиента
 type HttpClient interface {
     Do(req *http.Request) (*http.Response, error)
 }

// В тесте создаём мок
 type MockClient struct {}

 func (m *MockClient) Do(req *http.Request) (*http.Response, error) {
     // Возвращаем заранее подготовленный ответ
     return &http.Response{
         StatusCode: 200,
         Body: ioutil.NopCloser(strings.NewReader(`{"result":"ok"}`)),
     }, nil
 }

// Используем MockClient вместо реального http.Client