普通网友 2016-07-02 09:45
浏览 24

如何使用Go测试这种简单方法?

I'm writing some unit tests, and I'm stuck writing a test for the following method:

func (database *Database) FindUnusedKey() string {
    count := 0
    possibleKey := helpers.RandomString(helpers.Config.KeySize)
    for database.DoesKeyExist(possibleKey) {
        possibleKey = helpers.RandomString(helpers.Config.KeySize + uint8(count/10))
        count++
    }
    return possibleKey
}

I want a test in which helpers.RandomString(int) returns a string that is already a key in my database, but I've found no way to redeclare or monkey patch helpers.RandomString(int) in my test.

I tried using testify mock, but it doesn't seem possible.

Am I doing something wrong?

Thanks.

  • 写回答

1条回答 默认 最新

  • dongmi1864 2016-07-02 11:44
    关注

    You can extract database.DoesKeyExist via dependency injection and supply a function that returns true first time in unit tests. More details http://openmymind.net/Dependency-Injection-In-Go/

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题