Bagaimana untuk Menguji Kod Go yang Bergantung pada Nilai Malar?

DDD
Lepaskan: 2024-11-04 07:09:31
asal
740 orang telah melayarinya

How to Test Go Code That Relies on Constant Values?

Menguji Pemalar dalam Go

Satu cabaran biasa semasa menulis program Go ialah menguji kod yang bergantung pada nilai tetap. Secara lalai, pemalar tidak boleh ditakrifkan semula setelah ditakrifkan, menjadikannya sukar untuk mensimulasikan persekitaran yang berbeza semasa ujian.

Senario Masalah

Pertimbangkan kod berikut:

<code class="go">package main

import (
    "net/http"
    "net/http/httptest"
)

const baseUrl = "http://google.com"

func main() {
    // Logic that uses baseUrl
}</code>
Salin selepas log masuk

Untuk tujuan ujian, anda ingin menetapkan baseUrl kepada URL pelayan ujian. Walau bagaimanapun, mentakrifkan semula const baseUrl dalam fail ujian anda akan mengakibatkan ralat:

<code class="go">// in main_test.go
const baseUrl = "test_server_url" // Error: const baseUrl already defined</code>
Salin selepas log masuk

Penyelesaian

Untuk mengatasi had ini, anda boleh memfaktorkan semula kod anda untuk mengalih keluar const dan gunakan fungsi sebaliknya. Contohnya:

<code class="go">func GetUrl() string {
    return "http://google.com"
}

func main() {
    // Logic that uses GetUrl()
}</code>
Salin selepas log masuk

Dalam fail ujian anda, anda boleh mentakrifkan semula fungsi untuk mengembalikan URL pelayan ujian:

<code class="go">// in main_test.go
func GetUrl() string {
    return "test_server_url"
}</code>
Salin selepas log masuk

Pendekatan Lain

Jika anda memilih untuk mengekalkan nilai const, anda boleh mencipta fungsi kedua yang mengambil URL asas sebagai parameter dan mewakilkan pelaksanaan sebenar kepada fungsi asal:

<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 {
    // Same implementation that was in your original MyFunc() function
}</code>
Salin selepas log masuk

Dengan menggunakan pendekatan ini, anda boleh menguji pelaksanaan MyFunc() dengan menguji myFuncImpl(), menghantar URL asas yang berbeza untuk setiap kes ujian. Selain itu, fungsi MyFunc() asal kekal selamat kerana ia sentiasa menghantar baseUrl_ tetap kepada myFuncImpl().

Atas ialah kandungan terperinci Bagaimana untuk Menguji Kod Go yang Bergantung pada Nilai Malar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan