Sobes.tech
Middle+

¿Cómo probar la función printNumber sin esperar un segundo?

sobes.tech AI

Respuesta de la IA

Para probar la función printNumber, que llama a time.Sleep(time.Second) internamente, sin esperar realmente un segundo, se puede usar la inyección de dependencia para la función de dormir. En lugar de llamar directamente a time.Sleep en el código, pase la función de dormir como un parámetro o use una interfaz.

Ejemplo:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // en lugar de llamar directamente a time.Sleep
    fmt.Println(n)
}

// En la prueba, pase un sustituto:
func main() {
    fakeSleep := func(d time.Duration) {
        // no hacemos nada para no esperar
    }
    printNumber(fakeSleep, 42) // mostrará 42 inmediatamente
}

De esta forma, en las pruebas se puede reemplazar el sueño real por una función vacía, lo que acelera las pruebas y elimina las demoras.