我希望在编写用于测试某些数据库条目的单元测试中获得一些建议。
如果没有找到记录,则我正在测试的功能会将数据库作为种子。
func Seed(db *gorm.DB) {
var data []Data
db.Find(&data)
if len(data) == 0 {
// do seed default data
}
}
如果len测试,我似乎不太可能进行测试。我正在使用一个测试数据库,因此我可以在任何时候都对其进行核对,因此,如果我只需要在该函数上强制使用一个空的数据库,就没有问题。
该函数本身可以正常工作,我只想确保已将其覆盖。
任何建议都会很棒。
谢谢!
答案 0 :(得分:1)
这真的取决于,有很多方法可以根据您的风险水平和您想要投资来减轻这些风险的时间来解决这个问题。
gorm
库与mysql正确对话的能力,则可以:
Seed
,在调用该测试后,您可以从Users
中进行选择,并确保有条件地从len(users) == 0
创建了预期的条目Seed
,然后断言基础表为空。它会变得更加复杂。如果Seed
选择的是数据子集,则您的测试可能会插入2个用户,一个合格,两个不合格,并确保没有Seed
个新用户。