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
}
Бул ыкмада, тесттерде реалдуу уйку функциясын бош функцияга алмаштырып, тесттерди тездетип, кечиктирүүлөрдү жокко чыгара аласыз.