Go 如果未提供证书,单元测试tls.LoadX509KeyPair将失败

Go 如果未提供证书,单元测试tls.LoadX509KeyPair将失败,go,tls1.2,Go,Tls1.2,我想为包含这段代码的函数编写一个单元测试。但是,我的测试环境在os.Getenv(“CERT”)/os.Getenv(“KEY”)中永远不会有任何内容。这使得代码(tls.LoadX509KeyPair())返回一个错误,不允许我测试函数。 如何模拟/修改此代码段?这是通过为certFile和keyFile定义变量,然后在测试环境中重写它们来实现的 cert, err := tls.LoadX509KeyPair(os.Getenv("CERT"), os.Getenv("KEY")) if e

我想为包含这段代码的函数编写一个单元测试。但是,我的测试环境在
os.Getenv(“CERT”)
/
os.Getenv(“KEY”)
中永远不会有任何内容。这使得代码(
tls.LoadX509KeyPair()
)返回一个错误,不允许我测试函数。
如何模拟/修改此代码段?

这是通过为
certFile
keyFile
定义变量,然后在测试环境中重写它们来实现的

cert, err := tls.LoadX509KeyPair(os.Getenv("CERT"), os.Getenv("KEY"))
if err != nil {
    return err
}
按照下面的链接查看如何覆盖测试环境中的变量。

重构。如果测试中的代码依赖于未在测试中复制的环境,则要么无法测试它,要么必须重构它。你的意思是在go代码中使用os.Getenv()是一种不好的做法吗?不,没有问题。我指的是广义的“环境”——环境变量、本地文件(如证书)等。
//.. 
var certFile = os.Getenv("CERT")
var keyFile = os.Getenv("KEY")
//...
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
  if err != nil {
     return err
  }