登录
首页 >  Golang >  Go问答

模拟外部库函数无接口

来源:stackoverflow

时间:2024-02-17 20:00:25 378浏览 收藏

golang学习网今天将给大家带来《模拟外部库函数无接口》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习Golang或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

问题内容

我在我们的程序中使用了以下记录器库。 我们已经创建了单元测试,我们需要为 0.4.0 版本提供模拟 https://github.com/go-logr/logr/blob/v0.4.0/logr.go#l148

这就是我们如何模拟按预期工作的函数

type testLog struct {
    msg   string
    key   string
    value string
}

func (log *testLog) Enabled() bool {
    return true
}

func (log *testLog) Info(msg string, keysAndValues ...interface{}) {
    log.msg = msg
    log.key = keysAndValues[0].(string)
    log.value = keysAndValues[1].(string)
}

func (log *testLog) Error(err error, msg string, keysAndValues ...interface{}) {
}

func (log *testLog) V(level int) logr.Logger {
    return &testLog{}
}

func (log *testLog) WithValues(keysAndValues ...interface{}) logr.Logger {
    return &testLog{}
}

func (log *testLog) WithName(name string) logr.Logger {
    return &testLog{}
}

现在我们需要升级到版本1.2.0 而且实现也变了,没有接口。 我的问题是我应该如何使用新版本模拟记录器?

请参阅此链接以及以下功能 https://github.com/go-logr/logr/blob/v1.2.2/logr.go#l230


正确答案


你不能。提出一个非基于模拟的测试策略。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>