Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menghentikan `time.Now()` secara Global untuk Ujian yang Lebih Mudah?
Cara Menghentikan Masa.Now() Globally for Testing
Dalam pengekodan, sesetengah elemen mungkin sensitif masa, memerlukan manipulasi masa untuk tujuan ujian. Satu kaedah adalah untuk menghentikan masa.Now() dalam ujian. Walau bagaimanapun, time.Now() kerap digunakan, memerlukan penyelenggaraan pembolehubah untuk memantau masa tidur berlalu sebenar.
Artikel ini mengkaji pendekatan alternatif untuk menghentikan masa secara global.Now(), termasuk penggunaan antara muka tersuai dan kemungkinan mencipta pakej "masa" yang diubah suai.
Antara Muka Tersuai Pendekatan
Kaedah antara muka tersuai melibatkan pelaksanaan antara muka yang serupa dengan yang berikut:
type Clock interface { Now() time.Time After(d time.Duration) <-chan time.Time }
Antara muka ini menyediakan ruang letak untuk kaedah Now() dan After(), membenarkan anda untuk menentukan pelaksanaan khusus untuk ujian dan pengeluaran. Contohnya:
type realClock struct{} func (realClock) Now() time.Time { return time.Now() } func (realClock) After(d time.Duration) <-chan time.Time { return time.After(d) }
Isu Berpotensi
Walaupun pendekatan antara muka tersuai berkesan, ia disertakan dengan beberapa kaveat:
Pendekatan Alternatif
Awas:
Menukar masa sistem semasa menjalankan ujian atau secara amnya tidak disyorkan kerana ia boleh membawa kepada kebergantungan yang tidak dijangka dan isu penyahpepijatan.
Kesimpulan
Stubbing time.Now() secara global untuk ujian memerlukan pertimbangan yang teliti. Walaupun pendekatan antara muka tersuai adalah pilihan yang berdaya maju, ia mungkin memperkenalkan kerumitan tambahan. Sebagai alternatif, anda boleh membuat pakej "masa" yang diubah suai atau mereka bentuk kod anda dengan komponen tanpa kewarganegaraan untuk memudahkan ujian.
Atas ialah kandungan terperinci Bagaimana untuk Menghentikan `time.Now()` secara Global untuk Ujian yang Lebih Mudah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!