Jest-тест не читает переменные среды с помощью dotenv

Я запускаю тест функции, которая вызывает переменные среды, я получаю значение undefined. Решения, которые я пробовал, но не сработали:

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 / добавил Object.assign в beforeEach () в моем тестовом файле

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"
    }
};

Большинство из этих решений было предложено здесь: https://github.com/vuejs/vue-test-utils/issues/193, но ничего из этого не сработало


person asma    schedule 13.05.2020    source источник


Ответы (1)


Он работает, как ожидалось, с использованием пакета dotenv для загрузки переменных среды.

E.g.

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

Скорее всего, вам нужно получить путь к .env файлу с помощью метода path.resolve.

Результаты модульного тестирования:

 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
person slideshowp2    schedule 14.05.2020