1

我正在编写一些单元测试,并且一直在为以下方法编写测试:

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
}

我想要一个测试,其中helpers.RandomString(int)返回一个字符串,该字符串已经是我的数据库中的一个键,但我发现没有办法helpers.RandomString(int)在我的测试中重新声明或猴子补丁。

我尝试使用 testify mock,但似乎不可能。

难道我做错了什么?

谢谢。

4

1 回答 1

0

您可以通过依赖注入提取database.DoesKeyExist并提供一个在单元测试中第一次返回 true 的函数。更多详情http://openmymind.net/Dependency-Injection-In-Go/

于 2016-07-02T11:44:40.380 回答