2017-02-22 34 views
0

我有以下TestMain函數訪問變量:golang 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是用這個語法來訪問的。

回答

4

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) 
} 
3

你應該把你的任何變量函數的外部定義。

var dbInstance DbType