我有类似这样的方法(golang):
func (alert *Alert) CreateAlert(db *mgo.Database) error {
return db.C("alerts").Insert(&alert)
}
我应该如何对此进行单元测试? 如果我只是将此方法称为uni测试,那么我将不得不创建进行调用的测试DB。我不知何故觉得这将是集成测试的一部分,因为我们正在调用DB。
如果我模拟db对象,那么它将永远不会测试实际的实现。
我应该测试一下吗?作为编写单元测试的主要目标,如果数据是否插入到数据库中,并且这些功能已经在库本身中进行了测试,在我的情况下是mgo库。
请分享您对上述情景进行单元测试的最佳方法的看法。
答案 0 :(得分:2)
您可以使用模拟对其进行单元测试,以便不调用数据库,但只测试您的函数。
模拟数据库的方法有很多种,所以我不会详细介绍,但对这么小的函数进行单元测试也会很小。所有你真正要测试的是:
&alert
值,传递给其Insert()
方法?)error
)返回给函数的调用者特别是,在此功能的单元测试中,您不检查: