Sobes.tech
Middle+

Kaip patikrinti funkciją printNumber be sekundės laukimo?

sobes.tech AI

Atsakymas iš AI

Norint išbandyti funkciją printNumber, kuri viduje iškviečia time.Sleep(time.Second), nesulaukiant tikrosios sekundės, galima naudoti priklausomybių injekciją miegui. Vietoje tiesioginio time.Sleep kvietimo kode, perduokite miego funkciją kaip parametrą arba naudokite sąsają.

Pavyzdys:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // vietoje tiesioginio `time.Sleep` kvietimo
    fmt.Println(n)
}

// Teste perduokite pakaitalą:
func main() {
    fakeSleep := func(d time.Duration) {
        // nieko nedarome, kad nelauktume
    }
    printNumber(fakeSleep, 42) // iškart išves 42
}

Taip, testuose galima pakeisti tikrąjį miegą tuščia funkcija, kas pagreitina testavimą ir pašalina vėlavimus.