为了账号安全,请及时绑定邮箱和手机立即绑定

具有公共构造函数的私有类型的表驱动测试

具有公共构造函数的私有类型的表驱动测试

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.appgo-pls不会显示任何关于这个变量的信息,这意味着你附加到它的任何描述性注释都不会出现。

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


查看完整回答
反对 回复 2022-10-10
  • 1 回答
  • 0 关注
  • 60 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号