完全披露:這可能真的很愚蠢,但我是 Go 的新手,多年來(lái)沒(méi)有使用過(guò)靜態(tài)類型的語(yǔ)言。我有一個(gè)看起來(lái)像這樣的函數(shù):func Foo(bar *bar.BarStruct) { // do stuff with bar}在此示例中,bar 是第三方包,*bar.BarStruct 是指向結(jié)構(gòu)的指針。我想在刪除 bar.BarStruct 結(jié)構(gòu)時(shí)為 Foo 函數(shù)編寫(xiě)一個(gè)測(cè)試。我將如何剔除 *bar.BarStruct?例如,在 JavaScript 中,我會(huì)做這樣的事情test('does a Foo', () => { const mockBarStruct = { someProp: 123 } Foo(mockBarStruct) // rest of test})在 Go 中存根結(jié)構(gòu)的等效方法是什么?
1 回答

森欄
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您讓 Foo 采用接口而不是結(jié)構(gòu)指針,則在測(cè)試中您可以傳遞實(shí)現(xiàn)該接口的模擬或假結(jié)構(gòu)。
有一些模擬庫(kù),但由于 Golang 不允許運(yùn)行時(shí)類型編寫(xiě),它們運(yùn)行編譯時(shí)并輸出代碼。
希望有幫助!
- 1 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)
0/150
提交
取消