0

我是 redigomock 的新手,通过文档和谷歌搜索,我根本找不到一个有效的例子。我遗漏了一些明显的东西,但我希望我的测试能够正常工作。

鉴于此代码:

var checkPasswordFailures = func(client redis.Conn, u *User) bool {
    var userkey = getPasswordFailKey(u)
    var existing, err = redis.Bool(client.Do("EXISTS", userkey))

    fmt.Printf("%s - existing = %v\n", userkey, existing)

    if err != nil {
        Log.Errorf("error in checkPasswordFailures: %s", err.Error())
    }
    if existing == true {
        fmt.Println("Existing true")
        reply, err := redis.Int(client.Do("GET", userkey))

        Log.Debug("Attempt Count: %d", reply)

        if err != nil {
            Log.Errorf("error in checkPasswordFailures: %s", err.Error())
        }
        return reply < 5
    }
    fmt.Println("Using default")
    return true
}

而这个测试:

func TestCheckPasswordFailures_LessThan5(t *testing.T) {

	conn := redigomock.NewConn()

	conn.Command("EXISTS", "test@xxx.com_pwf").Expect(true)
	conn.Command("GET", "test@xxx.com_pwf").Expect(3)

	actual := checkPasswordFailures(conn, mockUser)

	assert.True(t, actual)

}

我收到一个错误:

redigo:Bool 的意外类型,得到了 bool 类型

我尝试了许多方法来强制将值转换为预期结果,但无济于事。

任何帮助表示赞赏,在此先感谢您!

4

1 回答 1

4

func TestCheckPasswordFailures_LessThan5(t *testing.T) {

conn := redigomock.NewConn()

conn.Command("EXISTS", "test@xxx.com_pwf").Expect([]byte("true"))
conn.Command("GET", "test@xxx.com_pwf").Expect(int64(1))

actual := checkPasswordFailures(conn, mockUser)

assert.True(t, actual)
}

于 2016-07-12T07:19:17.317 回答