我正在编写一个 Go 应用程序,我想为它创建一个测试,在该测试中,我从数据库中查询一些内容,将其插入到一个结构中,并将该结构值与我相同类型的静态结构进行比较有,如果它们匹配,则测试成功,如果不匹配,我想显示差异。所以我正在尝试使用go-cmp包。一般来说,我收到此错误:panic: cannot handle unexported field at {main.fooTest}.F1.Int.neg: "math/big".Intconsider using a custom Comparer; if you control the implementation of type, you can also consider using an Exporter, AllowUnexported, or cmpopts.IgnoreUnexported [recovered]我得到这是因为pgtype.Numeric我的结构中有type fooTest struct { I1 int I2 *int S1 string S2 *string F1 pgtype.Numeric F2 *pgtype.Numeric Ff1 float64 Ff2 *float64 Ia1 []int Ia2 []*int Ia3 *[]int Sa1 []string Sa2 []*string Sa3 *[]string Fa1 pgtype.Float8Array Fa2 *pgtype.Float8Array Faf1 []float64 Faf2 []*float64 Faf3 *[]float64}so I tried to test with `AllowUnnexported` but the `cmp.Equal` line still fails with that error.if !cmp.Equal(fooFoo, bar,cmp.AllowUnexported(fooTest{})) { t.Errorf("failed test: %v",cmp.Diff(fooFoo, bar)) }任何想法如何解决这个问题?
1 回答
12345678_0001
TA贡献1802条经验 获得超5个赞
你有没有尝试过
cmp.Equal(fooFoo, bar, cmp.AllowUnexported(pgtype.Numeric.Int{}))的文档AllowUnexported没有提到它递归地将其应用于结构中的所有值。
- 1 回答
- 0 关注
- 238 浏览
添加回答
举报
0/150
提交
取消
