Middle+
Hogyan teszteljük a printNumber funkciót egy másodperc várakozás nélkül?
sobes.tech MI
Válasz az MI-től
A printNumber függvény teszteléséhez, amely belül hívja a time.Sleep(time.Second)-t anélkül, hogy valóban várna egy másodpercet, használhatja a függőség injektálását az alvó funkcióhoz. Ahelyett, hogy közvetlenül hívná a time.Sleep-t a kódban, adja át az alvó funkciót paraméterként vagy használjon interfészt.
Példa:
package main
import (
"fmt"
"time"
)
type Sleeper func(d time.Duration)
func printNumber(sleep Sleeper, n int) {
sleep(time.Second) // a közvetlen time.Sleep helyett
fmt.Println(n)
}
// A tesztben, átadunk egy helyettesítőt:
func main() {
fakeSleep := func(d time.Duration) {
// semmit sem csinál, hogy ne várjon
}
printNumber(fakeSleep, 42) // azonnal kiírja 42-t
}
Így a tesztekben a valódi alvást ki lehet cserélni egy üres függvényre, ami felgyorsítja a tesztelést és kiküszöböli a késleltetéseket.