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
}

ამ გზით, ტესტებში რეალურ ძილს შეიძლება შეცვალოთ ცარიელი ფუნქციით, რაც ტესტირებას აჩქარებს და გადადებები ამცირებს.