Sobes.tech
Middle+

Hogyan teszteljük a printNumber funkciót egy másodperc várakozás nélkül?

sobes.tech MI

Válasz az MI-től

A printNumber függvény teszteléséhez, amely belül hívja a time.Sleep(time.Second)-t anélkül, hogy valóban várna egy másodpercet, használhatja a függőség injektálását az alvó funkcióhoz. Ahelyett, hogy közvetlenül hívná a time.Sleep-t a kódban, adja át az alvó funkciót paraméterként vagy használjon interfészt.

Példa:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // a közvetlen time.Sleep helyett
    fmt.Println(n)
}

// A tesztben, átadunk egy helyettesítőt:
func main() {
    fakeSleep := func(d time.Duration) {
        // semmit sem csinál, hogy ne várjon
    }
    printNumber(fakeSleep, 42) // azonnal kiírja 42-t
}

Így a tesztekben a valódi alvást ki lehet cserélni egy üres függvényre, ami felgyorsítja a tesztelést és kiküszöböli a késleltetéseket.