我正在实现一个在go中由leveldb (https://github.com/syndtr/goleveldb)支持的稳定器。我是新手,我试图弄清楚如何在下面的代码中获得perr != nil中的测试覆盖率。我可以测试我自己的错误,但我不知道如何可靠地获得级别‘t的Put方法来返回一个错误。为了获得一些边缘案例的测试覆盖率,模拟一个数据库似乎是一项很大的工作,但回报却不多。嘲笑水平是我在这里唯一的选择吗?如果是这样的话,推荐的go模拟框架是什么?如果有别的办法,那是什么?
if err == leveldb.ErrNotFound {
store.Lock()
perr := store.ldb.Put(itob(p.ID), p.ToBytes(), nil)
if perr != nil {
store.Unlock()
return &StorerError{
Message: fmt.Sprintf("leveldb put error could not create puppy %d : %s", p.ID, perr),
Code: 501,
}
}
store.Unlock()
return nil
}发布于 2019-07-06 07:16:43
模拟是这种测试的通用选择方法,这就是为什么golang/mock有一个mockgen命令来生成测试代码的原因。
mockgen有两种操作模式:源模式和反射模式。
-source标志启用的。
在此模式下可能有用的其他标志是-imports和-aux_files。示例:
mockgen -source=foo.go其他选项
示例:
mockgen数据库/sql/ Driver,驱动程序
https://stackoverflow.com/questions/56911670
复制相似问题