Back to questions
Senior
4
Как протестировать функцию FastestSearcher с помощью юнит-тестов?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
Для юнит-тестирования функции FastestSearcher нужно изолировать её от внешних зависимостей и проверить корректность логики выбора самого быстрого результата.
Основные шаги:
- Создать моки или заглушки для источников поиска, которые возвращают результаты с разной задержкой.
- Запустить FastestSearcher с этими моками.
- Проверить, что функция возвращает результат от самого быстрого источника.
- Проверить обработку ошибок и таймаутов.
Пример теста с использованием пакета testing:
func TestFastestSearcher(t *testing.T) {
slow := func() (string, error) {
time.Sleep(100 * time.Millisecond)
return "slow result", nil
}
fast := func() (string, error) {
time.Sleep(10 * time.Millisecond)
return "fast result", nil
}
result, err := FastestSearcher([]func() (string, error){slow, fast})
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
if result != "fast result" {
t.Errorf("Expected 'fast result', got %s", result)
}
}
Такой подход позволяет проверить, что функция действительно выбирает самый быстрый ответ.