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