Sobes.tech
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
}

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