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.