Назад к вопросам
МВидео
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
}
Таким образом, в тестах можно заменить реальный сон на пустую функцию, что ускорит тестирование и избавит от задержек.