我有以下TestMain功能:
func TestMain(m *testing.M) {
db := "[working_db_connection]"
dbInstance, _ := InitializeRepo(db, 2)
runTests := m.Run()
os.Exit(runTests)
}
以及以下样本测试
func TestSomeFeature(t *testing.T) {
fmt.Println(dbInstance)
}
TestSomeFeature函数确实运行,但是说dbInstance是未定义的。为什么这不能访问变量?从示例中我可以看到TestMain中的变量et用这种语法访问。
答案 0 :(得分:7)
dbInstance
是TestMain
的局部变量,它在TestSomeFeature
函数的生命周期中不存在。因此,测试套件告诉您dbInstance
未定义
将变量定义为TestMain外部的全局变量,然后在TestMain
var DbInstance MyVariableRepoType
func TestMain(m *testing.M) {
db := "[working_db_connection]"
DbInstance, _ = InitializeRepo(db, 2)
runTests := m.Run()
os.Exit(runTests)
}
答案 1 :(得分:3)
你应该在任何函数之外定义你的变量。
var dbInstance DbType