第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 golang 中重新定義 const 進(jìn)行測(cè)試

在 golang 中重新定義 const 進(jìn)行測(cè)試

Go
不負(fù)相思意 2021-11-22 17:48:34
我正在為服務(wù)和測(cè)試編寫一個(gè) http 客戶端,我想使用net/http/httptest服務(wù)器而不是調(diào)用遠(yuǎn)程 API。如果我將baseUrl一個(gè)全局變量設(shè)置為我的測(cè)試服務(wù)器的 url,我可以輕松地做到這一點(diǎn)。然而,這使得生產(chǎn)代碼更加脆弱,因?yàn)閎aseUrl也可以在運(yùn)行時(shí)更改。我的偏好是為生產(chǎn)代碼制作baseUrl一個(gè)const,但仍然可以更改。package mainconst baseUrl = "http://google.com"// in main_test.gots := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {  ... }const baseUrl = ts.URL// above line throws const baseUrl already defined error
查看完整描述

1 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您的代碼使用 const 值,則它不適合測(cè)試(關(guān)于使用該參數(shù)的不同值進(jìn)行測(cè)試)。


您可以通過(guò)輕微的重構(gòu)來(lái)解決您的問(wèn)題。假設(shè)您有一個(gè)使用此常量的函數(shù):


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


func MyFunc() string {

    // use baseUrl

}

您可以創(chuàng)建另一個(gè)將基本 URL 作為參數(shù)的函數(shù),并且您的原始函數(shù)MyFunc()調(diào)用它:


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

}

這樣你的庫(kù)的 API 不會(huì)改變,但現(xiàn)在你可以MyFunc()通過(guò) testing 來(lái)測(cè)試你原來(lái)的功能myFuncImpl(),你可以傳遞任何值來(lái)測(cè)試。


調(diào)用MyFunc()將保持安全,因?yàn)樗偸菍?const 傳遞baseUrl_到myFuncImpl()實(shí)現(xiàn)現(xiàn)在所在的位置。是否myFuncImpl()導(dǎo)出此新函數(shù)由您決定;它可能保持未導(dǎo)出狀態(tài),因?yàn)闇y(cè)試代碼可能(應(yīng)該)放在同一個(gè)包中并且可以毫無(wú)問(wèn)題地調(diào)用它。


查看完整回答
反對(duì) 回復(fù) 2021-11-22
  • 1 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)