Back to questions
МВидео
Middle+
2
Как протестировать функцию printNumber без ожидания секунды?
Companies where asked
Answer from AI
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
}
Таким образом, в тестах можно заменить реальный сон на пустую функцию, что ускорит тестирование и избавит от задержек.