Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menguji Kod Go yang Bergantung pada Nilai Malar?

Bagaimana untuk Menguji Kod Go yang Bergantung pada Nilai Malar?

DDD
DDDasal
2024-11-04 07:09:31746semak imbas

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>

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>

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>

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>

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>

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!

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