首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试go中的数据库错误?

如何测试go中的数据库错误?
EN

Stack Overflow用户
提问于 2019-07-06 06:03:11
回答 1查看 569关注 0票数 2

我正在实现一个在go中由leveldb (https://github.com/syndtr/goleveldb)支持的稳定器。我是新手,我试图弄清楚如何在下面的代码中获得perr != nil中的测试覆盖率。我可以测试我自己的错误,但我不知道如何可靠地获得级别‘t的Put方法来返回一个错误。为了获得一些边缘案例的测试覆盖率,模拟一个数据库似乎是一项很大的工作,但回报却不多。嘲笑水平是我在这里唯一的选择吗?如果是这样的话,推荐的go模拟框架是什么?如果有别的办法,那是什么?

代码语言:javascript
复制
    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
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-06 07:16:43

模拟是这种测试的通用选择方法,这就是为什么golang/mock有一个mockgen命令来生成测试代码的原因。

mockgen有两种操作模式:源模式和反射模式。

  • source 模式从源文件生成模拟接口。 它是通过使用-source标志启用的。 在此模式下可能有用的其他标志是-imports-aux_files

示例:

mockgen -source=foo.go其他选项

  • 反射模式通过构建一个使用反射来理解接口的程序生成模拟接口。 它是通过传递两个非标志参数来启用的:导入路径和以逗号分隔的符号列表。

示例:

mockgen数据库/sql/ Driver,驱动程序

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56911670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档