Sobes.tech
Назад к вопросам
Senior
3

Как протестировать функцию FastestSearcher с помощью юнит-тестов?

Компании, где спрашивали
Магнит Тех

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

sobes.tech AI

Для юнит-тестирования функции FastestSearcher нужно изолировать её от внешних зависимостей и проверить корректность логики выбора самого быстрого результата.

Основные шаги:

  1. Создать моки или заглушки для источников поиска, которые возвращают результаты с разной задержкой.
  2. Запустить FastestSearcher с этими моками.
  3. Проверить, что функция возвращает результат от самого быстрого источника.
  4. Проверить обработку ошибок и таймаутов.

Пример теста с использованием пакета 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)
    }
}

Такой подход позволяет проверить, что функция действительно выбирает самый быстрый ответ.