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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

web.Request 結(jié)構(gòu)的字段狀態(tài)未在 Golang 中正確克隆

web.Request 結(jié)構(gòu)的字段狀態(tài)未在 Golang 中正確克隆

Go
鴻蒙傳說 2023-04-04 14:22:00
在嘗試設(shè)置兩種不同的web.Request狀態(tài)以用于某些測試用例時,一種沒有任何標(biāo)題,另一種有,我遇到了問題:設(shè)置我創(chuàng)建fakeRequest,fakeRequestNoHeaders因此:// create fake requestfakeRequest := new(web.Request)fakeRequest.Request = httptest.NewRequest("GET",    fakeServer.URL,    nil)fakeRequestNoHeaders := new(web.Request)fakeRequestNoHeaders.Request = fakeRequest.Request// give fakeRequest some headersfakeRequest.Header.Add("Authorization", "Bearer ksjaf;oipyu7")fakeRequest.Header.Add("Scope", "test")完整性測試我當(dāng)然希望fakeRequest.Header != fakeRequestNoHeaders.Header. 我寫那個測試:t.Run("HeadersSanityTest", func(t *testing.T) {    assert.NotEqualf(t,        fakeRequest.Header,        fakeRequestNoHeaders.Header,        "fakeRequest,fakeRequestNoHeaders share the same header state")測試結(jié)果它失敗。為什么會這樣,我怎樣才能實(shí)現(xiàn)我正在嘗試的目標(biāo)?更新:我找到了罪魁禍?zhǔn)祝篽ttp.Request由 返回的底層httptest.NewRequest,實(shí)際上是一個指針。Header根本就屬于那個Request。問題現(xiàn)在歸結(jié)為“如何深度復(fù)制那個Request”。
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗 獲得超8個贊

事實(shí)上,問題不在于字段Header,而在于Request字段,它是一個指針。(哦不!我不小心淺拷貝了)


解決方案


我記得,在我之前的一個測試中,我專門寫了一個方法來解決這個問題:


func makeBasicRequest() *web.Request {

    baseReq := httptest.NewRequest(http.MethodPost,

        "[some url here]",

        nil)

    req := new(web.Request)

    req.Request = baseReq

    return req

}

我基本上只是把它帶入這個測試,并使用它,在我需要的每個虛假請求中點(diǎn)擊它一次。


查看完整回答
反對 回復(fù) 2023-04-04
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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