asm*_*sma 2 node.js jestjs dotenv
我正在对一个调用环境变量的函数运行测试,但未定义。我尝试过但不起作用的解决方案:
1/添加require('dotenv').config({path:'../.env'})
到我的测试文件中
2/ 在 package.json 中传递全局变量
"jest": {
"globals": {
"USER_ENDPOINT":"xxx",
"USER_KEY":"xxx"
}
}
Run Code Online (Sandbox Code Playgroud)
3/在package.json中的测试命令中传递我的变量
"test": "USER_ENDPOINT:xxx USER_KEY:xxx jest --watchAll --detectOpenHandles"
Run Code Online (Sandbox Code Playgroud)
4/ 在我的测试文件中的 beforeEach() 中添加了一个 Object.assign
beforeEach(() => {
process.env = Object.assign(process.env, {USER_ENDPOINT:"xxx", USER_KEY:"xxx" });
});
Run Code Online (Sandbox Code Playgroud)
并收到错误“Jest 遇到意外令牌”
5/我在根目录下创建了一个 jest.config.js 文件
require('dotenv').config({path:'./.env'});
module.exports = {
globals: {
USER_ENDPOINT:"xxx",
USER_KEY:"xxx"
}
};
Run Code Online (Sandbox Code Playgroud)
大多数这些解决方案都在这里建议: https: //github.com/vuejs/vue-test-utils/issues/193 ,但都不起作用
它按预期使用dotenv
包加载环境变量。
例如
\n\nindex.test.js
:
const path = require(\'path\');\n\nrequire(\'dotenv\').config({ path: path.resolve(__dirname, \'./.env\') });\n\ndescribe(\'61781150\', () => {\n it(\'should pass\', () => {\n expect(process.env.USER_ENDPOINT).toBe(\'http://localhost:3000\');\n expect(process.env.USER_KEY).toBe(\'abc123\');\n });\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n.env
:
USER_ENDPOINT=http://localhost:3000\nUSER_KEY=abc123\n
Run Code Online (Sandbox Code Playgroud)\n\n.env
您很可能需要通过该方法获取文件的路径path.resolve
。
单元测试结果:
\n\n PASS stackoverflow/61781150/index.test.js (8.236s)\n 61781150\n \xe2\x9c\x93 should pass (2ms)\n\nTest Suites: 1 passed, 1 total\nTests: 1 passed, 1 total\nSnapshots: 0 total\nTime: 9.264s, estimated 11s\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
12639 次 |
最近记录: |