1
嗨,我是Go的新手,我正在編寫一個簡單的應用程序,它從env變量中獲取一些配置。我在init函數中這樣做,如下所示。Golang:使用init()進行測試func
type envVars struct {
Host string `env:"APP_HOST"`
Username string `env:"APP_USERNAME"`
Password string `env:"APP_PASSWORD"`
}
var envConfig envVars
func init() {
if err := env.Parse(&envConfig); err != nil {
log.Fatal(err)
}
}
我寫了測試來驗證env變量是否被正確讀取。但問題是我的程序的init func甚至在測試的init函數之前就被調用了。有什麼辦法可以在我的程序的init func被調用之前做某種設置。
func init() {
os.Setenv("APP_HOST", "http://localhost:9999")
os.Setenv("APP_USERNAME", "john")
os.Setenv("APP_PASSWORD", "doe")
}
func TestEnvConfig(t *testing.T) {
assert.NotNil(t, envConfig)
assert.Equal(t, "http://localhost:9999", envConfig.Host)
}
不是。 init函數的要點是在所有其他函數之前自動調用。如果你想在init之前做一些事情,你需要將它移出init。 (也讀取env變量不是你通常測試的東西,讀取它們的代碼應該單獨測試) – JimB