Sobes.tech
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.