如何在测试前从函数初始化中模拟环境变量检查?
How to mock environment variable check from function initialization before test?
我有一个装饰函数,可以从环境变量中获取一些数据。所以一开始我检查这个环境变量是否设置了。
function dec(target: Object, key: string | symbol, descriptor: PropertyDescriptor) {
if (!process.env.NAMESPACE) {
throw new Error('The environment variable NAMESPACE was not set.');
}
...
}
然后我将这个装饰器用于一个函数。
@dec
function foo() {
...
}
我尝试使用 jest
单元测试来测试函数 foo()
。如果我没有在笔记本电脑上设置 NAMESPACE 变量,测试将失败。如果我尝试在 beforeAll
部分设置它,它仍然会失败。不知何故,函数 dec
比 beforeAll
更早被调用。如何在 dec
调用之前在测试中设置 NAMESPACE 变量?
开玩笑,您可以在测试之前和开玩笑挂钩(“beforeAll / beforeEach”)之前配置 运行 的安装文件。
在 jest.config.js
(或 .ts)中你有一个 setupFiles
属性.
您只需添加 jest.config.js :
{
...
setupFiles: ['<rootDir>/jest.setup.js'],
}
在 jest.setup.js
中,只需添加所有环境变量以进行测试:
process.env.NAMESPACE = 'Test-Namespace';
你最终可以使用 setupFilesAfterEnv
属性 是需要的。顺序是:
setupFiles > setupFilesAfterEnv > beforeAll > beforeEach > afterEach > afterAll
我有一个装饰函数,可以从环境变量中获取一些数据。所以一开始我检查这个环境变量是否设置了。
function dec(target: Object, key: string | symbol, descriptor: PropertyDescriptor) {
if (!process.env.NAMESPACE) {
throw new Error('The environment variable NAMESPACE was not set.');
}
...
}
然后我将这个装饰器用于一个函数。
@dec
function foo() {
...
}
我尝试使用 jest
单元测试来测试函数 foo()
。如果我没有在笔记本电脑上设置 NAMESPACE 变量,测试将失败。如果我尝试在 beforeAll
部分设置它,它仍然会失败。不知何故,函数 dec
比 beforeAll
更早被调用。如何在 dec
调用之前在测试中设置 NAMESPACE 变量?
开玩笑,您可以在测试之前和开玩笑挂钩(“beforeAll / beforeEach”)之前配置 运行 的安装文件。
在 jest.config.js
(或 .ts)中你有一个 setupFiles
属性.
您只需添加 jest.config.js :
{
...
setupFiles: ['<rootDir>/jest.setup.js'],
}
在 jest.setup.js
中,只需添加所有环境变量以进行测试:
process.env.NAMESPACE = 'Test-Namespace';
你最终可以使用 setupFilesAfterEnv
属性 是需要的。顺序是:
setupFiles > setupFilesAfterEnv > beforeAll > beforeEach > afterEach > afterAll