Sobes.tech
Middle+

Comment tester la fonction printNumber sans attendre une seconde?

sobes.tech IA

Réponse de l'IA

Pour tester la fonction printNumber, qui appelle time.Sleep(time.Second) en interne, sans attendre réellement une seconde, vous pouvez utiliser l'injection de dépendance pour la fonction de sommeil. Au lieu d'appeler directement time.Sleep dans le code, passez la fonction de sommeil en paramètre ou utilisez une interface.

Exemple:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // au lieu d'appeler directement time.Sleep
    fmt.Println(n)
}

// Dans le test, passez un substitut:
func main() {
    fakeSleep := func(d time.Duration) {
        // ne rien faire pour ne pas attendre
    }
    printNumber(fakeSleep, 42) // affichera 42 immédiatement
}

Ainsi, dans les tests, vous pouvez remplacer le sommeil réel par une fonction vide, ce qui accélère les tests et élimine les délais.