我正在写一个在数据库中阅读/写结构体的测试,它的一个字段是一个在数据库中自动计算的时间戳。所以当我写结构体时,它的时间戳是0,但当我从数据库中读取它时,时间戳有一个实际值。我想比较这两个值,但忽略自动计算字段。可以吗?
00jrzges1#
在测试之前设置其他“except”字段:
now := time.Now() expected := SomeStruct{ ID: 123, Name: "Test", Timestamp: now, ... } result, _ := db.Select(....) result.Timeestamp = now if !reflect.DeepEqual(result, expected) { ... }
r1zhe5dt2#
您可以使用cmpopts包的IgnoreFields函数轻松地完成此操作。下面是一个例子:
IgnoreFields
got, want := FuncUnderTest() if !cmp.Equal(want, got, cmpopts.IgnoreFields(YourStruct{}, "FieldName")) { t.Errorf("FuncUnderTest() mismatch") }
2条答案
按热度按时间00jrzges1#
在测试之前设置其他“except”字段:
r1zhe5dt2#
您可以使用cmpopts包的
IgnoreFields
函数轻松地完成此操作。下面是一个例子: