【发布时间】:2021-06-07 20:31:16
【问题描述】:
我有一个基于process.env.NODE_ENV 更改变量的配置文件,函数如下:
const { hostname } = window.location
let USE_DEV_TOOLS = false
if (
hostname === 'qa.example.com' ||
hostname === 'dev.example.com' ||
NODE_ENV !== 'production'
) {
USE_DEV_TOOLS = true
}
在我的测试中,我想测试如果NODE_ENV 是生产,USE_DEV_TOOLS 返回false 但是,如果我尝试更改NODE_ENV,它会在获取变量后更新。
import config from 'consts/config'
describe('Environment variables', () => {
const ORIGINAL_ENV = process.env
beforeEach(() => {
jest.resetModules()
process.env = { ...ORIGINAL_ENV }
})
afterAll(() => {
process.env = ORIGINAL_ENV
})
it('production does not use dev tools', () => {
process.env = { NODE_ENV: 'production' }
// console logs properly, but is changing after I get config
console.log(process.env.NODE_ENV)
expect(config.USE_DEV_TOOLS).toBe(false)
})
})
【问题讨论】:
-
我认为问题是你在设置这个值之前导入了文件,我有一个类似的例子,如果它有帮助的话,还有一个配置github.com/gkampitakis/fastify-template-server/blob/master/src/…
标签: javascript node.js jestjs environment-variables nodeenv