当我在用 beego 写单元测时,源代码里用到了 beego.AppConfig.GetSection()
然后在测试方法调用的时候就报错了 .
测试方法不能正确的读取配置文件的内容。部分代码如下:
cfgs, err := beego.AppConfig.GetSection("test_conf")
if err != nil {
panic(err)
}
报错输出:
> panic outputs: not implement in the fakeConfigContainer
beego 的作者在 2014 年的时候回复说这是个 bug
,已经在新版本里修复,但是我现在还是遇到了这个问题,我的 beego 版本是 1.11.1
。
我在作者的 github 源码仓库 搜索解决方法时发现很多人也遇到了同样的问题,解决方法也各不相同。
最终我还是找到了一个不是最好的解决方法。
假设工程的目录结构是:
.
|-- conf
└─ app.conf
|-- controllers
└─ tc.go
在 tc.go
的 init
方法里我们之前调用 beego.AppConfig.GetSection()
,由于不能正确的读取配置,所以会报错。
解决方法就是在调用之前加载下配置,如下:
err := beego.LoadAppConfig("ini", "../conf/app.conf")
if err != nil {
panic(err)
}
cfgs, err := beego.AppConfig.GetSection("test_conf")
if err != nil {
panic(err)
}