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

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

proto.Unmarshal 測(cè)試不一致地失敗

proto.Unmarshal 測(cè)試不一致地失敗

Go
www說 2022-12-19 10:41:38
我有一些 Redis 代碼依賴于 Proto 標(biāo)準(zhǔn)來編組/解組數(shù)據(jù)。我使用gomega編寫了以下測(cè)試來測(cè)試proto.Unmarshal:b64Decoded, err := base64.StdEncoding.DecodeString("derp")Expect(err).ShouldNot(HaveOccurred())var item testRecorderr = proto.Unmarshal(b64Decoded, &item)Expect(err).Should(HaveOccurred())Expect(err.Error()).Should(Equal("proto:\u00a0cannot parse invalid wire-format data"))但是,最終斷言失敗,因?yàn)轭A(yù)期的錯(cuò)誤字符串是proto: cannot parse invalid wire-format data。這里顯而易見的解決方案是更改它,當(dāng)我這樣做時(shí),錯(cuò)誤就會(huì)消失。直到我修改測(cè)試并重新運(yùn)行它,在這種情況下,測(cè)試再次失敗,告訴我字符串應(yīng)該是proto:\u00a0cannot parse invalid wire-format data。這個(gè)循環(huán)無限繼續(xù)下去。那么,我在這里做錯(cuò)了什么以及如何解決這個(gè)問題?
查看完整描述

1 回答

?
慕姐4208626

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

這個(gè)問題跟你想的不太一樣;該protobuf包隨機(jī)選擇一個(gè)空格或\u00a0在輸出錯(cuò)誤時(shí)(我相信它基于二進(jìn)制的哈希)。你可以在這里看到這個(gè):

// Deliberately introduce instability into the error message string to

// discourage users from performing error string comparisons.

if detrand.Bool() {

   return "proto: " // use non-breaking spaces (U+00a0)

} else {

   return "proto: " // use regular spaces (U+0020)

}

所以你遇到的問題是故意的,旨在防止用戶做你正在嘗試的事情(依賴于保持不變的錯(cuò)誤)。你只有在更改測(cè)試時(shí)才會(huì)看到它(我猜,不是每次更改它時(shí))的原因是它Go會(huì)緩存測(cè)試結(jié)果(默認(rèn)情況下,測(cè)試僅在發(fā)生更改時(shí)運(yùn)行)。

關(guān)于你能做些什么,我首先建議考慮這個(gè)測(cè)試是否真的有必要。軟件包作者特別指出錯(cuò)誤不穩(wěn)定,因此在google.golang.org/protobuf/proto發(fā)布新版本時(shí),以這種方式進(jìn)行比較可能會(huì)中斷。

包測(cè)試通過調(diào)用(例如這里protobuf)來解決這個(gè)問題。您不能這樣做,因?yàn)閕s under and, as such, not accessible。detrand.Disable()google.golang.org/protobuf/internal/detrandinternal

如果您真的想解決這個(gè)問題,最簡(jiǎn)單的方法可能是strings.Contains


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

添加回答

舉報(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)