你们是不是单元测试的时候会报配置文件路径错误
这个错误其实很好解决,找到引入配置文件这一块代码做出如下修改
核心思想就是获取config.go的绝对路径然后推演出项目根目录
然后就是根据绝对路径引入配置文件了,不管单元测试还是正常运行都可以
/**
* 读取配置文件,最先被初始化
*/
func init() {
// 获取当前工作目录
rootDir, err := os.Getwd()
if err != nil {
log.Fatalf("Failed to get current working directory: %s", err)
}
// 这是单元测试
if strings.HasSuffix(rootDir, "service") {
rootDir = filepath.Dir(rootDir)
}
// 设置工作目录
if err := os.Chdir(rootDir); err != nil {
log.Fatalf("Failed to change working directory: %s", err)
}
fmt.Println("工作目录:", rootDir)
// 加载.env
godotenv.Load(".env")
// 设置当前环境
mode := os.Getenv("Mode")
fmt.Println("当前环境:", mode)
if mode != "" {
mode = "-" + mode
}
// 加载配置文件
configPath := rootDir + "/config/application" + mode + ".yaml"
yamlFile, err := ioutil.ReadFile(configPath)
if err != nil {
log.Panicf("Failed to read file , cause is %s", err.Error())
}
config := config.Config{}
err = yaml.Unmarshal(yamlFile, &config)
global.CONFIG = config
if err != nil {
fmt.Println(err.Error())
}
}
单元测试
go test -run TestGetFieldWhiteListAll