Jest测试未使用dotenv读取环境变量

编程入门 行业动态 更新时间:2024-10-08 00:26:22

Jest测试未使用dotenv读取<a href=https://www.elefans.com/category/jswz/34/1771433.html style=环境变量"/>

Jest测试未使用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遇到意外令牌”

5 /我在根目录上创建了一个jest.config.js文件

require('dotenv').config({path:'./.env'});
module.exports = {
    globals: {
        USER_ENDPOINT:"xxx", 
        USER_KEY:"xxx"
    }
};

这里建议使用大多数解决方案:

回答如下:

[使用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  stackoverflow/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

更多推荐

Jest测试未使用dotenv读取环境变量

本文发布于:2024-05-07 14:04:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756590.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环境变量   测试   Jest   dotenv

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!