用mocha测试依赖于环境变量process.env.APP_ENV的配置模块
Testing config module with mocha that depends on environment variable process.env.APP_ENV
我正在研究一个项目,该项目使用process.env.APP_ENV
中的值,以便为当前环境选择适当的配置文件:
import prodParams from './production';
import stgParams from './staging';
import devParams from './development';
let params = devParams;
switch (process.env.APP_ENV) {
case 'production':
params = prodParams;
break;
case 'staging':
params = stgParams;
break;
default:
params = devParams;
}
export default params;
我试着用下面的代码测试这个(还没有断言):
import params from '../../../parameters';
...
it.only('should return the appropriate config ', (done) => {
process.env.APP_ENV = 'production';
console.log(params);
done();
});
然而,当我如上所示设置环境变量process.env.APP_ENV
时,它仍然到达模块为未定义,因此它总是返回开发配置而不是生产环境。
撇开测试部分不谈,功能工作得很好,但我还是想测试一下。
有什么建议吗?
import
语句在任何其他代码之前执行,因此您不能使用import
来完成此工作。
您可以稍微让它与require
一起工作,如果您需要参数文件在之后,您已经设置了环境变量:
process.env.APP_ENV = 'production';
let params = require('../../../parameters').default;
...
然而,这仍然不是很好,因为它只能工作一次,因为require
维护的缓存(随后的测试将APP_ENV
设置为不同的值将无法工作)。
一个解决方案是让parameters.js
导出一个函数,您将调用:
// parameters.js
export default function() {
let params = devParams;
switch (process.env.APP_ENV) {
...
}
return params;
}
// test.js
import getParams from '../../../parameters';
...
process.env.APP_ENV = 'production';
let params = getParams();
或者外部设置APP_ENV
:
$ env APP_ENV='production' mocha ...
相关文章:
- RequireJS向模块传递配置总是返回undefined
- 如何配置分析以将数据发送到我自己的服务器
- 扩展jQuery插件以更改配置
- webRTC错误未定义配置
- 如何配置WebStorm以正确格式化生成器函数
- Javascript配置服务器URL并将其存储
- Node Red在Admin UI中获取配置节点值
- AngularJS智能表全局配置实现
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- web配置http到https重定向异常
- 如何配置browserfy与Karma使用转换Stringify为Mustache模板
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 使用javascript配置文件作为handlebas博客模板,但配置不是't工作正常
- 我可以访问量角器配置文件中的参数吗
- 如何使用socket.io在meanjs项目中配置jshint
- Django无法通过urls.py配置找到djangular/app.js文件.如何进行故障排除
- 命名和配置jsfiddle
- 如何从配置文件中设置Angular值
- 如何使console.log可配置
- 用mocha测试依赖于环境变量process.env.APP_ENV的配置模块