登录
首页 >  Golang >  Go问答

使用 Golang 加载 JSON 配置文件的实践方法

来源:stackoverflow

时间:2024-02-29 12:30:18 162浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《使用 Golang 加载 JSON 配置文件的实践方法》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

在测试的 golang 项目中,有一个方法将 json 配置文件加载到变量中。它的代码是这样的:

// Load the JSON config file
func Load(configFile string, outputObj interface{}) *errors.ErrorSt {
    var err error
    // Read the config file
    jsonBytes, err := ioutil.ReadFile(configFile)
    if err != nil {
        fmt.Println(err.Error())
        return errors.File().AddDetails(err.Error())
    }

    // Parse the config
    if err := json.Unmarshal(jsonBytes, outputObj); err != nil {
        return errors.JSON().AddDetails("Could not parse" + configFile + ": " + err.Error())
    }
    return nil

}

我想测试它,但我不知道是否应该为测试用例创建假 json 文件,或者只是模拟整个函数。我的 java 背景让我倾向于后者。

经过探索,我发现我正在使用的 testify 框架有一个用于模拟方法的包,但我尝试模拟的内容不属于接口(非 oop 语言的陷阱!!)


解决方案


有几种方法可以做到这一点。使用示例数据文件来测试加载和解析文件当然并不罕见(您可以在标准库中找到它)。对于这样的函数来说,采用 io.Reader 而不是文件路径也是一种很常见的做法,这样在测试中您可以只传递例如bytes.Reader 在测试其他所有内容时有效地“模拟”文件。使用哪种方法(或两者,如果您选择)取决于您的用例和设计目标;切换到 io.Reader 可以为您提供更大的灵活性,但只有您知道这种灵活性在上下文中是否有任何价值。如果没有,只需将测试文件与您的测试一起保存并阅读即可。

到这里,我们也就讲完了《使用 Golang 加载 JSON 配置文件的实践方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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