我有一个 Go 应用程序,应用程序在启动时读取环境变量。应用程序使用环境变量的值来配置自身。现在,根据环境变量的值之一,应用程序的设置与同一环境变量的其他值不同。我想在单元测试中测试这两个设置。我还想并行运行这些测试。我可以在一个测试中使用设置环境变量值os.Setenv(),但这也会影响并行运行的另一个测试,该测试试图为同一环境变量设置不同的值。在这种情况下,最佳做法是什么?我们如何设置不影响单元测试的环境变量值。
1 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
不要在测试中使用环境变量。相反,将配置传递到您测试的函数中。在正常启动期间,从环境中读取该配置,但在测试期间,直接将其传入。例子:
你的代码:
func main() {
envFoo := os.Getenv("FOO")
if err := someFunc(envFoo); err != nil {
log.Fatal(err)
}
}
func someFunc(confValue string) error {
// do stuff
}
您的测试:
func TestSomeFunc(t *testing.T) {
err := someFunc("test config value")
// assert things
}
- 1 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消