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

Как протестировать функцию printNumber без ожидания секунды?

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

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

sobes.tech AI

Чтобы протестировать функцию printNumber, которая внутри себя вызывает time.Sleep(time.Second), без реального ожидания секунды, можно использовать инъекцию зависимости для функции сна. Вместо прямого вызова time.Sleep в коде, передавайте функцию сна как параметр или используйте интерфейс.

Пример:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // вместо прямого вызова time.Sleep
    fmt.Println(n)
}

// В тесте передаем заглушку:
func main() {
    fakeSleep := func(d time.Duration) {
        // ничего не делаем, чтобы не ждать
    }
    printNumber(fakeSleep, 42) // сразу выведет 42
}

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