4

我有一个包可以验证进程是否设置了特定的环境变量init(),否则它会恐慌。

我这样做是为了确保在启动时正确配置该过程。

问题是这种方法不是真正可测试的(使用_test.go文件),因为测试套件中不存在环境。

解决这个问题的最佳方法是什么?

4

1 回答 1

3

您希望能够测试验证,还是在测试文件中完全跳过它?无论哪种方式都将使用相同的基本方法,即将验证代码分离到它自己的文件中,该文件不会在测试期间构建。如果您只想在测试期间完全跳过验证,请将整个init()函数放入该文件中。如果您想测试验证,只需让验证代码调用您自己的 shim 以获取环境值,然后将您的 shim 放入该非测试文件中,然后将单独的 shim 放入仅在测试期间编译的文件中。

您可以使用文件头中的构建约束来控制文件是否在测试期间构建。IIRC,运行测试应用了test约束,所以你可以检查一下。

于 2012-12-11T02:14:20.773 回答