在beego框架中写单元测试时,go test 获取不到app.conf的配置信息(解决)
赶时间可以直接看解决方法的第一个⚪
目录
- 问题描述
- 原因
- 解决方法
问题描述
最近需要在beego框架里测试一个函数,这个函数需要用到beego.AppConfig获取app.conf的配置信息,但在执行go test无法获取。
原因
首先,我们打开你的 项目/main.go, 看到import了 “github.com/astaxie/beego”,要知道,在go run 和go test的时候,会先执行import的所有包的init函数
⚪在执行beego的init的函数时候,会先默认解析当前目录的conf/app.conf,注意!!!!!是当前目录!!!!!这就是问题所在
⚪当前目录指的是你import beego 的那个文件的目录,比如,你在D:goproject/beegoproject/model/model1/api_test.go 中import了"github.com/astaxie/beego",当前目录就指的是你api_test.go所在目录
⚪而我们一般只会在D:goproject/beegoproject/路径下,也就是和main.go同一级目录下,放入我们的conf文件,你执行 go test 想让他读这个配置文件,怎么能解析到呢
解决方法
知道了问题的原因就很好解决了
⚪咱们只要把conf文件放到我们go test的执行目录就可以了
⚪或者,你不想在go test目录下放conf文件,就需要稍微改一下go的代码,因为要用到beego的ParseConfig函数,而beego的这个函数开头是小写,我们要把它该成大写才能用。这个文件在"github.com/astaxie/beego/config.go"中,改完之后咱们把api_test.go文件加一个init函数。appConfPath 写你要解析的app.conf文件路径,具体看下面的代码。
func init(){//解析confappConfPath := "D:/goproject/src/maid/conf/app.conf" //线上测试需要改err := beego.ParseConfig(appConfPath)if err != nil {fmt.Println("beego.ParseConfig(conf/app.conf)err :", err)return}
}
🆗感谢龙哥帮我解决问题❀
发布评论