我需要在我的单元测试process.env.NODE_ENV
中进行模拟。
我正在使用webpack 2.0进行构建,jest-cli作为构建运行程序,以及mocha和测试
import { ENV } from '../index';
describe('environments configuration', () => {
describe('default environment', () => {
let config;
beforeAll(() => {
delete process.env.NODE_ENV;
process.env.NODE_ENV = ENV.DEFAULT;
config = require('../index');
});
it('should be default login url', () => {
expect(config.url.login).toEqual('http://localhost:8080/login');
});
it('should store token in local storage', () => {
expect(config.STORAGE.TOKEN.type).toEqual('localStorage');
});
});
describe('development environment', () => {
let config;
beforeAll(() => {
delete process.env.NODE_ENV;
process.env.NODE_ENV = ENV.DEVELOPMENT;
config = require('../index');
});
it('should be development login url', () => {
expect(config.url.login).toEqual('https://dev.localhost.com/login');
});
it('should store token in local storage', () => {
expect(config.STORAGE.TOKEN.type).toEqual('localStorage');
});
});
describe('production environment', () => {
let config;
beforeAll(() => {
delete process.env.NODE_ENV;
process.env.NODE_ENV = ENV.PRODUCTION;
config = require('../index');
});
it('should be production login url', () => {
expect(config.url.login).toEqual('https://localhost.com/login');
});
it('should store token in session storage', () => {
expect(config.STORAGE.TOKEN.type).toEqual('sessionStorage');
});
});
});
不幸的是,这似乎没有办法,我总是首先加载默认配置。
我发现这个plugin最终可以解决问题。
几乎没有人在使用,所以我想知道:
模仿process.env.NODE
的正确方法是什么?
答案 0 :(得分:2)
在导入配置之前,您应该在覆盖env变量后找到可以运行jest.resetModules();
的变量。然后应加载反映预期NODE_ENV
值的配置。
如果没有开玩笑,你可以使用npm的require-uncached模块来达到同样的效果。