Middle+
Ako otestovať funkciu printNumber bez čakania sekundy?
sobes.tech AI
Odpoveď od AI
Na testovanie funkcie printNumber, ktorá vo vnútri volá time.Sleep(time.Second), bez skutočného čakania sekundy, môžete použiť injekciu závislostí pre funkciu spánku. Namiesto priameho volania time.Sleep v kóde odovzdajte funkciu spánku ako parameter alebo použite rozhranie.
Príklad:
package main
import (
"fmt"
"time"
)
type Sleeper func(d time.Duration)
func printNumber(sleep Sleeper, n int) {
sleep(time.Second) // namiesto priameho volania time.Sleep
fmt.Println(n)
}
// V teste odovzdajte náhradu:
func main() {
fakeSleep := func(d time.Duration) {
// nič nerobíme, aby sme nečakali
}
printNumber(fakeSleep, 42) // okamžite vypíše 42
}
Týmto spôsobom je možné v testoch nahradiť skutočný spánok prázdnou funkciou, čo zrýchli testovanie a odstráni oneskorenia.