Middle+
Kā pārbaudīt funkciju printNumber bez viena sekundi gaidīšanas?
sobes.tech AI
Atbilde no AI
Lai pārbaudītu funkciju printNumber, kas iekšēji izsauc time.Sleep(time.Second), negaidot īstu sekundi, var izmantot atkarību injekciju miega funkcijai. Tā vietā, lai tieši izsauktu time.Sleep kodā, nodod miega funkciju kā parametru vai izmanto interfeisu.
Piemērs:
package main
import (
"fmt"
"time"
)
type Sleeper func(d time.Duration)
func printNumber(sleep Sleeper, n int) {
sleep(time.Second) // vietā, lai tieši izsauktu `time.Sleep`
fmt.Println(n)
}
// Testā nodod aizstājēju:
func main() {
fakeSleep := func(d time.Duration) {
// neko nedarām, lai negaidītu
}
printNumber(fakeSleep, 42) // uzreiz izvadīs 42
}
Tādējādi testos var aizstāt reālo miegu ar tukšu funkciju, kas paātrina testēšanu un novērš aizkaves.