我有以下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。

最佳答案

dbInstanceTestMain的局部变量,在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)
}

关于testing - golang TestMain()函数设置测试无法访问的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42395897/

10-13 02:11