登录
首页 >  Golang >  Go问答

编写一个函数读取指定的 JSON 配置文件进行测试

来源:stackoverflow

时间:2024-02-06 16:42:21 251浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《编写一个函数读取指定的 JSON 配置文件进行测试》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我是 go 测试新手,正在尝试测试读取 json 配置文件(针对 snowflake)的 func

我读过几个建议使用 io.reader 接口的问题,但我无法完全解释为什么这样做有意义以及如何成功这样做。

这是我的方法:

package helpers


import (
    "encoding/json"
    "io"
    "log"
    "os"
    "fmt"
)

type sfconfig struct {
    user      string `json:"user"`
    password  string `json:"password"`
    account   string `json:"account"`
    warehouse string `json:"warehouse"`
    database  string `json:"database"`
    schema    string `json:"schema"`
    role      string `json:"role"`
}

func readsnowflakeconfig(fp string) (string, error) {
    var config sfconfig
    file, err := os.open(fp)
    if err != nil {
        log.fatalln("could not open snowflake credentials file.")
        return "", err
    }
    defer file.close()
    data, err := io.readall(file)
    if err != nil {
        log.fatalln("could not read snowflake credentials file.")
        return "", err
    }
    json.unmarshal(data, &config)

    // prepare our snowflake db connection string
    connstring := fmt.sprintf(
        "%s:%s@%s/%s/%s?warehouse=%s&role=%s",
        config.user,
        config.password,
        config.account,
        config.database,
        config.schema,
        config.warehouse,
        config.role,
    )
    return connstring, nil
}

实际的 test.json 文件:

{
    "account": "account",
    "user": "username",
    "password": "password",
    "role": "CRUD_ROLE",
    "warehouse": "WHS",
    "database": "DB",
    "schema": "schema"
}

正确答案


您必须更改 func 签名才能使函数可测试。

你的函数应该对配置的位置有一些抽象,所以我的建议是使用这样的东西

func (reader io.Reader) (string, error) {
 ... 
}

或者只是将测试配置文件传递给测试中的方法(单独的方法)。

理论要掌握,实操不能落!以上关于《编写一个函数读取指定的 JSON 配置文件进行测试》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

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