Middle+
30
printNumber функциясын бір секунд күтпестен қалай тестілеуге болады?
Сұралған компаниялар
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
}
Таким образом, в тестах можно заменить реальный сон на пустую функцию, что ускорит тестирование и избавит от задержек.