Menguji Pemalar dalam Go
Dalam Go, pemalar ialah alat yang berharga untuk memastikan ketekalan dan ketepatan kod. Walau bagaimanapun, apabila ia datang kepada ujian unit, menggunakan pemalar boleh mencipta cabaran. Artikel ini meneroka cara mentakrifkan semula pemalar khusus untuk tujuan ujian dalam Go.
Cabaran dengan Pemalar
Pemalar dalam Go ialah nilai tidak berubah yang tidak boleh diubah suai semasa pelaksanaan program. Ketidakbolehubahan ini memastikan integriti keadaan program dan menghalang perubahan yang tidak disengajakan. Walau bagaimanapun, semasa ujian, adalah perlu untuk mengubah suai pemalar buat sementara waktu untuk menguji senario tertentu.
Pendekatan Mesra Pengujian
Pertimbangkan contoh berikut:
<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 // Error: const baseUrl already defined</code>
Dalam contoh ini, kami mahu menggunakan pelayan ujian dan bukannya memanggil API jauh untuk ujian. Untuk melakukan ini, kita perlu mentakrifkan semula baseUrl dengan URL pelayan ujian. Walau bagaimanapun, Go melemparkan ralat kerana baseUrl malar sudah ditakrifkan.
Penyelesaian: Refactor for Testability
Untuk memudahkan ujian, kita boleh memfaktorkan semula kod dengan memperkenalkan fungsi tambahan:
<code class="go">const baseUrl_ = "http://google.com" func MyFunc() string { // Call other function passing the const value return myFuncImpl(baseUrl_) } func myFuncImpl(baseUrl string) string { // use baseUrl // Same implementation that was in your original MyFunc() function }</code>
Dalam kod pemfaktoran semula ini, fungsi MyFunc asal mewakilkan pelaksanaannya kepada myFuncImpl, yang mengambil parameter baseUrl. Ini membolehkan kami memanggil myFuncImpl terus daripada fungsi ujian dan memasukkan mana-mana URL asas yang dikehendaki.
Memastikan Kod Pengeluaran Selamat
Fungsi MyFunc asal kekal selamat dan tidak terjejas oleh pemfaktoran semula. Ia sentiasa menghantar baseUrl_ tetap kepada myFuncImpl, memastikan bahawa kod pengeluaran tidak mempunyai gelagat yang tidak dijangka disebabkan oleh pemalar yang diubah suai.
Kesimpulan
Teknik ini membolehkan pembangun mentakrifkan semula pemalar. untuk tujuan ujian sambil mengekalkan integriti dan keselamatan kod pengeluaran. Dengan memperkenalkan fungsi tambahan yang menyediakan fungsi yang sama seperti yang asal, ujian boleh mengubah suai pemalar tanpa menjejaskan kelakuan kod sebenar.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Mentakrifkan Semula Pemalar untuk Tujuan Pengujian dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!