Middle+
Cum să testezi funcția printNumber fără a aștepta o secundă?
sobes.tech AI
Răspuns de la AI
Pentru a testa funcția printNumber, care apelează intern time.Sleep(time.Second), fără a aștepta efectiv o secundă, poți folosi injecția de dependență pentru funcția de somn. În loc să apelezi direct time.Sleep în cod, transmite funcția de somn ca parametru sau folosește o interfață.
Exemplu:
package main
import (
"fmt"
"time"
)
type Sleeper func(d time.Duration)
func printNumber(sleep Sleeper, n int) {
sleep(time.Second) // în loc de apelul direct la time.Sleep
fmt.Println(n)
}
// În test, se transmite un substitut:
func main() {
fakeSleep := func(d time.Duration) {
// nu facem nimic pentru a nu aștepta
}
printNumber(fakeSleep, 42) // va afișa 42 imediat
}
Astfel, în teste, se poate înlocui somnul real cu o funcție goală, ceea ce accelerează testarea și elimină întârzierile.