Back to questions
Middle
7
Используешь ли моки в автотестах? Какие плюсы и минусы их использования?
Companies where asked
Mayflower
Answer from AI
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