golang使用缓存库go-cache的测试用例-短期内存缓存数据类似memcache/redis-【唯一客服】

2023-03-18 16:51:17 浏览数 (2)

golang中使用go-cache是非常普遍的,比如,我在对接微信客服接口的时候,获取access_token,默认获取一次有两个小时的有效期

这个时候,我就可以使用go-cache来缓存access_token了

下面是对go-cache的测试用例:

代码语言:javascript复制
package tools
import (
    "testing"
    "time"

    "github.com/patrickmn/go-cache"
)

func TestGoCache(t *testing.T) {
    // 创建一个具有默认过期时间为5分钟和清理间隔为10分钟的缓存
    c := cache.New(5*time.Minute, 10*time.Minute)

    // 使用默认过期时间将键 "foo" 的值设置为 "bar"
    c.Set("foo", "bar", cache.DefaultExpiration)

    // 获取键 "foo" 的值
    value, found := c.Get("foo")
    if !found {
        t.Error("缓存中未找到键 'foo'")
    }

    if value != "bar" {
        t.Errorf("预期为 'bar',得到 '%s'", value)
    }

    // 删除键 "foo"
    c.Delete("foo")

    // 检查键 "foo" 是否已删除
    _, found = c.Get("foo")
    if found {
        t.Error("键 'foo' 应该被删除")
    }
}
// TestGoCacheWithExpiration 测试设置过期时间为3600秒的数据
func TestGoCacheWithExpiration(t *testing.T) {
    // 创建一个具有默认过期时间为5分钟和清理间隔为10分钟的缓存
    c := cache.New(5*time.Minute, 10*time.Minute)

    // 将键 "foo" 的值设置为 "bar",过期时间为10秒
    c.Set("foo", "bar", time.Duration(10)*time.Second)

    // 获取键 "foo" 的值
    value, found := c.Get("foo")
    if !found {
        t.Error("缓存中未找到键 'foo'")
    }

    if value != "bar" {
        t.Errorf("预期为 'bar',得到 '%s'", value)
    }

    // 等待10秒后,键 "foo" 应该过期
    time.Sleep(10 * time.Second)

    // 检查键 "foo" 是否已过期
    _, found = c.Get("foo")
    if found {
        t.Error("键 'foo' 应该已过期")
    }
}

go test -v go_cache_test.go

过期以后就会被删除的,所以测试全部通过

0 人点赞