Middle+
Jak otestovat funkci printNumber bez čekání sekundy?
sobes.tech AI
Odpověď od AI
Pro otestování funkce printNumber, která interně volá time.Sleep(time.Second), aniž by skutečně čekala sekundu, můžete použít injekci závislosti pro funkci spánku. Místo přímého volání time.Sleep v kódu předávejte funkci spánku jako parametr nebo použijte rozhraní.
Příklad:
package main
import (
"fmt"
"time"
)
type Sleeper func(d time.Duration)
func printNumber(sleep Sleeper, n int) {
sleep(time.Second) // místo přímého volání time.Sleep
fmt.Println(n)
}
// V testu předáte náhražku:
func main() {
fakeSleep := func(d time.Duration) {
// neděláme nic, abychom nečekali
}
printNumber(fakeSleep, 42) // ihned vypíše 42
}
Tímto způsobem lze v testech nahradit skutečný spánek prázdnou funkcí, což urychlí testování a odstraní zpoždění.