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.