gpt4 book ai didi

戈朗 : Testing with init() func

转载 作者:IT王子 更新时间:2023-10-29 01:15:17 24 4
gpt4 key购买 nike

大家好,我是 Go 的新手,我正在编写一个简单的应用程序,它从 env 变量中获取一些配置。我在 init 函数中执行此操作,如下所示。

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

我写了测试来验证环境变量是否被正确读取。但问题是我的程序的 init func 甚至在我的测试的 init func 之前就被调用了。在我的程序的 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)
}

最佳答案

您可以使用 TestMain 函数来控制测试前后发生的事情。

例如:

func TestMain(m *testing.M) {
// Write code here to run before tests

// Run tests
exitVal := m.Run()

// Write code here to run after tests

// Exit with exit value from tests
os.Exit(exitVal)
}

func TestYourFunc(t *testing.T) {
// Test code
}

关于戈朗 : Testing with init() func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38484942/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com