Sobes.tech
Middle+

printNumber функциясын бир секунд күтпөстөн кандайча сынап көрсө болот?

sobes.tech AI

AIден жооп

printNumber функциясын тестирлөө үчүн, ал өзүндө time.Sleep(time.Second) чакырат, реалдуу күтүүнү алдын алуу үчүн, уйку функциясына көзкаранды болуу инъекциясын колдонсо болот. Коддо түз time.Sleep чакыруусун эмес, уйку функциясын параметр катары өткөрүңүз же интерфейс колдонуу.

Мисал:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // түз `time.Sleep` чакыруусунун ордуна
    fmt.Println(n)
}

// Тестте, алмаштыргычты өткөрүңүз:
func main() {
    fakeSleep := func(d time.Duration) {
        // эч нерсе кылбайбыз, күтпөйт
    }
    printNumber(fakeSleep, 42) // дароо чыгарат 42
}

Бул ыкмада, тесттерде реалдуу уйку функциясын бош функцияга алмаштырып, тесттерди тездетип, кечиктирүүлөрдү жокко чыгара аласыз.