Я работаю над проектом, который использует значение в 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
, как показано выше, он по-прежнему достигает модуль как неопределенная, поэтому он всегда возвращает развитие с onfig вместо рабочей среды.
Оставляя в стороне тестовую часть, функциональность работает нормально, но я бы хотел ее протестировать независимо.
Любые предложения о том, как исправить это?
Я бы рекомендовал избегать полагаться на глобальные свойства, такие ' process.env' во всех ваших модулях. Прочитайте переменные среды в точке входа в приложение/тестовую установку и передайте их. В вашем 'parameters.js' экспортируйте' function', а не объект, который принимает в качестве аргумента среду для загрузки. – MarcoL