Sobes.tech
Middle+

Kā pārbaudīt funkciju printNumber bez viena sekundi gaidīšanas?

sobes.tech AI

Atbilde no AI

Lai pārbaudītu funkciju printNumber, kas iekšēji izsauc time.Sleep(time.Second), negaidot īstu sekundi, var izmantot atkarību injekciju miega funkcijai. Tā vietā, lai tieši izsauktu time.Sleep kodā, nodod miega funkciju kā parametru vai izmanto interfeisu.

Piemērs:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // vietā, lai tieši izsauktu `time.Sleep`
    fmt.Println(n)
}

// Testā nodod aizstājēju:
func main() {
    fakeSleep := func(d time.Duration) {
        // neko nedarām, lai negaidītu
    }
    printNumber(fakeSleep, 42) // uzreiz izvadīs 42
}

Tādējādi testos var aizstāt reālo miegu ar tukšu funkciju, kas paātrina testēšanu un novērš aizkaves.