1
こんにちは私は新しいです。私は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関数が私のテストのinit関数の前でさえ呼び出されるということです。私のプログラムのinit関数が呼び出される前に何らかの設定をすることができる方法はありますか?
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