beego 单元测试的 bug

当我在用 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.goinit 方法里我们之前调用 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)
}

refer Issues of