亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

具有公共構造函數的私有類型的表驅動測試

具有公共構造函數的私有類型的表驅動測試

Go
蕭十郎 2022-10-10 10:31:37
我試圖減少我的 API 的表面積,所以我使我的app結構不導出(使用小寫名稱),并且只公開了New函數:package mylibtype app struct {}func New() *app {    return &app{}}但是現在,我想為這個東西寫一個表驅動的測試,我不能mylib.app在一個結構中保存一個:package mylib_testimport (    "testing"    "mylib")func TestApp(t *testing.T) {    tests := []struct {        name string        app  private_type_public_new.app // This part doesn't work    }{        // ...    }    for _, tt := range tests {        t.Run(tt.name, func(t *testing.T) {        })    }}我有什么選擇?我應該將應用程序結構公開(App)并保留所有未導出的字段嗎?我可以用高階函數做一些有趣的事情來存儲New函數實例以在子測試中實例化應用程序嗎?還有什么?
查看完整描述

1 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

我有什么選擇?我應該將應用程序結構公開(App)并保留所有未導出的字段嗎?

是的,將其導出為Appgolang/lint(現已棄用)特別警告引用未導出類型的導出函數,因為它們很難讓您的包的消費者使用。例如,如果你指定x := mylib.New()了一個 ,x的實例,除了它的類型之外*myapp.app,go-pls不會顯示任何關于這個變量的信息,這意味著你附加到它的任何描述性注釋都不會出現。

https://github.com/golang/lint/issues/210


查看完整回答
反對 回復 2022-10-10
  • 1 回答
  • 0 關注
  • 76 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號