[beego]go test时读取配置文件失败,全部都为空,bee run是正常的

2024-01-03 843 views
2

使用beego.AppConfig.String("logpath")读取配置文件 (写在了init()函数里) 当bee run 时能正常读到key对应的value 但使用 go test时 执行我的测试代码时,却读不到对不的value, value为空

回答

3

找到原因了,我是在controller里写的测试代码,当到controller目录下执行go test时 beego找app.conf的路径时找错了,只有执行go test -c 把生成的代码移到上一级目录执行时才是成功的 BConfig = newBConfig() var err error if AppPath, err = filepath.Abs(filepath.Dir(os.Args[0])); err != nil { panic(err) } workPath, err := os.Getwd() if err != nil { panic(err) } appConfigPath = filepath.Join(workPath, "conf", "app.conf") println("nicle:", appConfigPath) //个人调试添加的 if !utils.FileExists(appConfigPath) { appConfigPath = filepath.Join(AppPath, "conf", "app.conf") if !utils.FileExists(appConfigPath) { AppConfig = &beegoAppConfig{innerConfig: config.NewFakeConfig()} return } }

6

在main函数里 beego.LoadAppConfig("ini", "/home/src/xxxxproject/conf/app.conf") 指定了路径也不行

4

您好 @nicle-lin

我也遇到了类似问题,请问您最后有找到最新的解决方案吗 或者说您最后是怎么完成测试用例的执行的,把其-c编译后挪动到项目根目录吗?

谢谢!

4

我也遇到这个问题,请问你们有解决的办法吗?

0

我是在测试包的init代码里加一个beego.LoadAppConfig("ini", "配置文件路径")指定配置文件就可以了

8

@EDDYCJY 有人回答了

0

假设工程的目录结构是: . |-- conf └─ app.conf |-- controllers └─ tc.go

tc.goinit 方法里加上:

err := beego.LoadAppConfig("ini", "../conf/app.conf")
if err != nil {
    panic(err)
}

可以解决。