Jest 测试不使用 dotenv 读取环境变量
Jest test not reading environment variables with dotenv
我正在 运行 对调用环境变量的函数进行测试,但未定义。
我尝试过但没有奏效的解决方案:
1/ 在我的测试文件中添加require('dotenv').config({path:'../.env'})
2/ 在 package.json
中传递全局变量
"jest": {
"globals": {
"USER_ENDPOINT":"xxx",
"USER_KEY":"xxx"
}
}
3/ 在 package.json
的测试命令中传递我的变量
"test": "USER_ENDPOINT:xxx USER_KEY:xxx jest --watchAll --detectOpenHandles"
4/ 在我的测试文件
的 beforeEach() 中添加了一个 Object.assign
beforeEach(() => {
process.env = Object.assign(process.env, {USER_ENDPOINT:"xxx", USER_KEY:"xxx" });
});
并得到错误 "Jest encountered an unexpected token"
5/ 我在根
上创建了一个jest.config.js 文件
require('dotenv').config({path:'./.env'});
module.exports = {
globals: {
USER_ENDPOINT:"xxx",
USER_KEY:"xxx"
}
};
这里建议了其中的大部分解决方案:
https://github.com/vuejs/vue-test-utils/issues/193
但是 none 有效
使用 dotenv
包加载环境变量,它按预期工作。
例如
index.test.js
:
const path = require('path');
require('dotenv').config({ path: path.resolve(__dirname, './.env') });
describe('61781150', () => {
it('should pass', () => {
expect(process.env.USER_ENDPOINT).toBe('http://localhost:3000');
expect(process.env.USER_KEY).toBe('abc123');
});
});
.env
:
USER_ENDPOINT=http://localhost:3000
USER_KEY=abc123
很可能你需要通过path.resolve
方法获取.env
文件的路径。
单元测试结果:
PASS Whosebug/61781150/index.test.js (8.236s)
61781150
✓ should pass (2ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 9.264s, estimated 11s
我正在 运行 对调用环境变量的函数进行测试,但未定义。 我尝试过但没有奏效的解决方案:
1/ 在我的测试文件中添加require('dotenv').config({path:'../.env'})
2/ 在 package.json
中传递全局变量"jest": {
"globals": {
"USER_ENDPOINT":"xxx",
"USER_KEY":"xxx"
}
}
3/ 在 package.json
的测试命令中传递我的变量"test": "USER_ENDPOINT:xxx USER_KEY:xxx jest --watchAll --detectOpenHandles"
4/ 在我的测试文件
的 beforeEach() 中添加了一个 Object.assignbeforeEach(() => {
process.env = Object.assign(process.env, {USER_ENDPOINT:"xxx", USER_KEY:"xxx" });
});
并得到错误 "Jest encountered an unexpected token"
5/ 我在根
上创建了一个jest.config.js 文件require('dotenv').config({path:'./.env'});
module.exports = {
globals: {
USER_ENDPOINT:"xxx",
USER_KEY:"xxx"
}
};
这里建议了其中的大部分解决方案: https://github.com/vuejs/vue-test-utils/issues/193 但是 none 有效
使用 dotenv
包加载环境变量,它按预期工作。
例如
index.test.js
:
const path = require('path');
require('dotenv').config({ path: path.resolve(__dirname, './.env') });
describe('61781150', () => {
it('should pass', () => {
expect(process.env.USER_ENDPOINT).toBe('http://localhost:3000');
expect(process.env.USER_KEY).toBe('abc123');
});
});
.env
:
USER_ENDPOINT=http://localhost:3000
USER_KEY=abc123
很可能你需要通过path.resolve
方法获取.env
文件的路径。
单元测试结果:
PASS Whosebug/61781150/index.test.js (8.236s)
61781150
✓ should pass (2ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 9.264s, estimated 11s