Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menitik `time.Now()` Secara Berkesan Secara Global untuk Ujian?

Bagaimanakah Saya Boleh Menitik `time.Now()` Secara Berkesan Secara Global untuk Ujian?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 10:37:59424semak imbas

How Can I Effectively Stub `time.Now()` Globally for Testing?

Global Stubbing of time.Now()

Dalam ujian, ia menjadi penting untuk mengawal aspek kod yang bergantung kepada masa. Walau bagaimanapun, mengurangkan masa.Now() secara global boleh mencabar kerana penggunaan meluas merentas berbilang bahagian kod.

Pendekatan Cadangan: Antara Muka Masa Tersuai

Pelaksanaan semasa menggunakan antara muka tersuai ialah penyelesaian yang berkesan. Berikut ialah ringkasan pendekatan:

  1. Tentukan antara muka Jam dengan kaedah Now() dan After(d time.Duration).
  2. Buat pelaksanaan konkrit (cth., RealClock) yang berkelakuan seperti pakej masa standard.
  3. Buat pelaksanaan olok-olok untuk ujian (cth., mockClock).

Alternatif

Menukar jam sistem semasa ujian amat tidak digalakkan kerana ia boleh membawa kepada pergantungan yang tidak dijangka.

Penghadan

Stubbing keluar time.Now() secara global mempunyai hadnya. Contohnya, jika kod yang sedang diuji menggunakan pustaka pihak ketiga yang bergantung pada masa sistem, ia mungkin tidak dapat mengatasi gelagat mereka.

Faedah Kod Tanpa Kewarganegaraan

Merancang kod dengan ketegasan sesedikit mungkin memudahkan ujian dan memudahkan keselarasan. Dengan mengasingkan kefungsian kepada komponen tanpa kewarganegaraan yang boleh diuji, ia menjadi lebih mudah untuk mengawal aspek sensitif masa semasa ujian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menitik `time.Now()` Secara Berkesan Secara Global untuk Ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn