Sobes.tech
Middle+

printNumber funktsiyasini bir soniya kutmay without qanday sinab ko'rish mumkin?

sobes.tech AI

AIdan javob

printNumber funksiyasını test qilish uchun, ichida time.Sleep(time.Second) chaqiradigan funksiyani haqiqiy kutishsiz sinash uchun, uyqu funksiyasi uchun bog'liqlikni in'ektsiya qilish mumkin. Kodda to'g'ridan-to'g'ri time.Sleep chaqirmasdan, uyqu funksiyasini parametr sifatida yuboring yoki interfeysdan foydalaning.

Misol:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // to'g'ridan-to'g'ri time.Sleep o'rniga
    fmt.Println(n)
}

// Testda, o'rnini bosuvchi funksiyani yuboring:
func main() {
    fakeSleep := func(d time.Duration) {
        // hech nima qilmaymiz, kutmaymiz
    }
    printNumber(fakeSleep, 42) // darhol 42 ni chiqaradi
}

Shu tarzda, testlarda haqiqiy uyqu funksiyasini bo'sh funksiyaga almashtirish mumkin, bu esa testlarni tezlashtiradi va kechikishlarni olib tashlaydi.