Dalam kod pengeluaran, selalunya wajar untuk menggunakan pemalar untuk nilai yang stabil seperti URL asas. Walau bagaimanapun, ini boleh menimbulkan cabaran semasa ujian, kerana pelaksanaan lalai const dalam Go tidak membenarkan penugasan semula.
Pertimbangkan coretan kod berikut, yang cuba mentakrifkan semula pemalar baseUrl dalam fail ujian:
<code class="go">package main const baseUrl = "http://google.com" // in main_test.go ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... } const baseUrl = ts.URL // throws error: const baseUrl already defined</code>
Kod ini akan gagal dengan const baseUrl ralat yang telah ditakrifkan, kerana Go tidak membenarkan mentakrifkan semula pemalar.
Untuk mendayakan pemalar mesra ujian, pertimbangkan untuk memfaktorkan semula kod anda. Daripada menggunakan pemalar global, buat fungsi yang mengambil nilai pemalar sebagai parameter:
<code class="go">const baseUrl_ = "http://google.com" func MyFunc(baseUrl string) { // Use baseUrl }</code>
Dalam fail ujian, anda boleh mentakrifkan semula parameter baseUrl tanpa menjejaskan kod pengeluaran:
<code class="go">// in main_test.go ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ... } myFuncImpl(ts.URL) // Call the function with the test URL</code>
Pendekatan ini membolehkan anda menguji kod anda dengan nilai pemalar yang berbeza sambil mengekalkan pelaksanaan asal. Fungsi asal MyFunc() masih menggunakan nilai pemalar pengeluaran, memastikan kestabilan untuk senario bukan ujian.
Atas ialah kandungan terperinci Bagaimana Anda Boleh Mentakrifkan Semula Pemalar dalam Go for Testing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!