我要在测试环境中运行的节点上有一组测试。
在开发中,我想针对localhost运行,但是在容器中运行时,我要针对通过process.env变量设置的测试环境运行。
是否可以将主机URL全局设置为localhost,除非已将其设置为环境变量?
我知道我可能会写一些语句来检查是否设置了env变量,但是我想知道是否有关于此变量或通用策略的最佳实践。
谢谢
答案 0 :(得分:1)
您可以检查env变量是否可用以及是否未将其设置为localhost。例子
if (!process.env.servicehost) {
process.env.servicehost='localhost';
}
建议您将其封装到一个返回基本服务URL的方法中。示例:https://testhost.com/myApi
,然后您的测试套件可以连接到特定的API路径。使用以上方法在启动阶段创建此基本服务URL。
答案 1 :(得分:1)
这里没有最佳实践,因为最佳实践在很大程度上取决于您的开发/生产管道。
一种方法是使用global
对象:
global.host = process.env.testhost || localhost; // localhost already set to something
如果未定义localhost
,它将提供testhost
。
现在所有模块都可以使用host
(如果愿意,可以使用global.host
)。
答案 2 :(得分:1)
根据十二要素应用程序原则,最好的方法是将应用程序配置存储在环境变量中,而不是在应用程序配置中或诸如此类,尤其是在使用Docker时。也许您应该从两个选项中选择最佳方法,例如:
const URI = process.env.URI || 'localhost';