Sobes.tech
Middle+

Wie testet man die Funktion printNumber, ohne eine Sekunde zu warten?

sobes.tech KI

Antwort von AI

Um die Funktion printNumber zu testen, die intern time.Sleep(time.Second) aufruft, ohne tatsächlich eine Sekunde zu warten, kann man Dependency Injection für die Schlaffunktion verwenden. Anstatt direkt time.Sleep im Code aufzurufen, übergeben Sie die Schlaffunktion als Parameter oder verwenden Sie eine Schnittstelle.

Beispiel:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // anstelle des direkten Aufrufs von time.Sleep
    fmt.Println(n)
}

// Im Test übergeben Sie eine Platzhalterfunktion:
func main() {
    fakeSleep := func(d time.Duration) {
        // macht nichts, um nicht zu warten
    }
    printNumber(fakeSleep, 42) // gibt sofort 42 aus
}

Auf diese Weise kann im Test die echte Schlaffunktion durch eine leere Funktion ersetzt werden, was die Tests beschleunigt und Verzögerungen vermeidet.