提问人:Coldchain9 提问时间:2/28/2023 最后编辑:Coldchain9 更新时间:3/7/2023 访问量:92
测试函数以读取特定的 JSON 配置文件
Testing a func to read a specific JSON config file
问:
我是 Go 测试的新手,正在尝试测试读取 JSON 配置文件(用于 Snowflake)的 JSON 配置文件。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"
}
答:
0赞
AngelX
3/7/2023
#1
您必须更改 func 签名才能使函数可测试。
你的 func 应该对它需要配置的地方有一些抽象,所以我的建议是使用这样的东西
func (reader io.Reader) (string, error) {
...
}
或者只是将测试配置文件传递给测试中的方法,即单独的方法。
上一个:加载 Docker 镜像失败
评论
os.Open
bytes.Reader
strings.Reader
func
os.Open