Sobes.tech
Middle+

Πώς να δοκιμάσετε τη λειτουργία printNumber χωρίς να περιμένετε ένα δευτερόλεπτο;

sobes.tech AI

Απάντηση από AI

Για να δοκιμάσετε τη λειτουργία printNumber, η οποία καλεί εσωτερικά το time.Sleep(time.Second), χωρίς να περιμένετε πραγματικά ένα δευτερόλεπτο, μπορείτε να χρησιμοποιήσετε την εισαγωγή εξαρτήσεων για τη λειτουργία ύπνου. Αντί να καλέσετε άμεσα το time.Sleep στον κώδικα, περάστε τη λειτουργία ύπνου ως παράμετρο ή χρησιμοποιήστε μια διεπαφή.

Παράδειγμα:

package main

import (
    "fmt"
    "time"
)

type Sleeper func(d time.Duration)

func printNumber(sleep Sleeper, n int) {
    sleep(time.Second) // αντί για άμεση κλήση του time.Sleep
    fmt.Println(n)
}

// Στη δοκιμή, περάστε μια ψεύτικη:
func main() {
    fakeSleep := func(d time.Duration) {
        // δεν κάνουμε τίποτα για να μην περιμένουμε
    }
    printNumber(fakeSleep, 42) // θα εμφανίσει αμέσως 42
}

Έτσι, στις δοκιμές, μπορείτε να αντικαταστήσετε τον πραγματικό ύπνο με μια κενή λειτουργία, επιταχύνοντας τις δοκιμές και αποφεύγοντας καθυστερήσεις.