Middle+
Как да тествате функцията printNumber без да чакате секунда?
sobes.tech AI
Отговор от 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 веднага
}
По този начин, в тестовете може да се замени реалният сън с празна функция, което ускорява тестовете и премахва забавяния.