如何在玩笑中将 process.env 设置为未定义
Posted
技术标签:
【中文标题】如何在玩笑中将 process.env 设置为未定义【英文标题】:How to set process.env to undefined in jest 【发布时间】:2021-06-21 12:26:18 【问题描述】:我正在尝试在我的应用程序中对一个检查process.env.NODE_ENV
值的函数进行单元测试。 FWIW process.env.NODE_ENV
的类型是 string | undefined
。
在我的玩笑测试中,我可以轻松地测试这样设置的字符串值:
it('test', () =>
// Arrange
process.env.NODE_ENV = 'development';
// Act
functionUnderTest();
// Assert
export(true).toBe(true);
);
当我想测试我的代码对process.env.NODE_ENV
设置为undefined
的处理时,就会出现问题。我希望能够在我的笑话测试中简单地设置process.env.NODE_ENV = undefined
。不幸的是,似乎在某个地方,该值被转换为string
,这样当测试命中我的函数时,process.env.NODE_ENV
的值是"undefined"
(作为字符串)。
我也尝试像这样将process.env.NODE_ENV
设置为undefined
,但结果相同:
process.env = Object.assign(process.env, NODE_ENV: undefined );
如何在开玩笑测试中将process.env.NODE_ENV
设置为undefined
?
【问题讨论】:
这能回答你的问题吗? Test process.env with Jest 【参考方案1】:只需delete
process.env.NODE_ENV
。
例如
function functionUnderTest()
return process.env.NODE_ENV;
describe('66787053', () =>
it('test', () =>
process.env.NODE_ENV = 'development';
const actual = functionUnderTest();
expect(actual).toBe('development');
);
it('should pass', () =>
delete process.env.NODE_ENV;
const actual = functionUnderTest();
expect(actual).toBeUndefined();
);
);
测试结果:
PASS examples/66787053/index.test.js (6.951 s)
66787053
✓ test (2 ms)
✓ should pass
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 9.061 s
【讨论】:
【参考方案2】:这对我有用。在package.json
"jest":
"rootDir": "./src",
"setupFiles": [
"<rootDir>/jest.env.js"
]
src/jest.env.js
看起来像
process.env.REGION = 'us-west-2'
【讨论】:
以上是关于如何在玩笑中将 process.env 设置为未定义的主要内容,如果未能解决你的问题,请参考以下文章
Node.js里面怎么设置process.env.PORT的值