testing - golang TestMain() 函数设置测试无法访问的变量

标签 testing go

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

相关文章:

go - 如何将标志作为 urface/cli 命令的参数传递?

java - 用于 Eclipse 插件开发的自动化单元测试 (junit)

javascript - 如何使用 java 脚本发布 json 请求并接收对 "go server"(go 语言)的 json 响应

goapp serve : not working, 'goapp' 不被识别为内部或外部命令

go - 需要在本地调试依赖项

go - 为什么这个测试使用 reflect.deepEqual 会失败?

ruby - 如何 stub DataMapper 与 RSpec2 的关联?

c# - 代码覆盖率工具和 Visual Studio 2008 Pro

iphone - 将 iPhone 应用程序提交到应用程序商店而不在设备上进行测试

javascript - 没有通过 Var 的 Qunit 测试