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
}
ამ გზით, ტესტებში რეალურ ძილს შეიძლება შეცვალოთ ცარიელი ფუნქციით, რაც ტესტირებას აჩქარებს და გადადებები ამცირებს.