使用beego.AppConfig.String("logpath")读取配置文件 (写在了init()函数里) 当bee run 时能正常读到key对应的value 但使用 go test时 执行我的测试代码时,却读不到对不的value, value为空
[beego]go test时读取配置文件失败,全部都为空,bee run是正常的
回答
找到原因了,我是在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 } }
在main函数里 beego.LoadAppConfig("ini", "/home/src/xxxxproject/conf/app.conf") 指定了路径也不行
您好 @nicle-lin
我也遇到了类似问题,请问您最后有找到最新的解决方案吗
或者说您最后是怎么完成测试用例的执行的,把其-c
编译后挪动到项目根目录吗?
谢谢!
我也遇到这个问题,请问你们有解决的办法吗?
我是在测试包的init代码里加一个beego.LoadAppConfig("ini", "配置文件路径")指定配置文件就可以了
@EDDYCJY 有人回答了
假设工程的目录结构是: . |-- conf └─ app.conf |-- controllers └─ tc.go
在 tc.go
的 init
方法里加上:
err := beego.LoadAppConfig("ini", "../conf/app.conf")
if err != nil {
panic(err)
}
可以解决。