Можно ли загрузить переменные окружения из файла env для целей модульного тестирования в Jest?Я собираюсь запустить серию тестов, например, так:
// unit tests for env file
describe('env', () => {
it('should have a client id', () => {
expect(process.env.CLIENT_ID).toBeDefined();
});
it('should have a client secret', () => {
expect(process.env.CLIENT_SECRET).toBeDefined();
});
it('should have a host', () => {
expect(process.env.HOST).toBeDefined();
});
it('should have a scope', () => {
expect(process.env.SCOPE).toBeDefined();
});
it('should have a response type', () => {
expect(process.env.RESPONSE_TYPE).toBeDefined();
});
it('should have a redirect uri', () => {
expect(process.env.REDIRECT_URI).toBeDefined();
});
});
В настоящее время все вышеперечисленные тесты не пройдут, заявив, что переменные не определены.Первоначально я использовал настройку mocha / chai, которая позволяла мне загружать все переменные env с помощью dotenv.Это включало запуск всех модульных тестов через веб-пакет и работало нормально.
Однако, прочитав документацию Jest не запускает тесты через веб-пакет;вместо этого модули извлекаются через moduleNameMapper.Это отлично работает для всего остального, но я не могу загрузить переменные файла env.До сих пор я пытался использовать опцию setupFiles для js-файла, который вызывает dotenv.config с указанным ему путем к файлу env:
// setup file for jest
const dotenv = require('dotenv');
dotenv.config({ path: './env' });
Это не сработало, поэтому я 'Теперь мы прибегли к использованию только файла .env.js для модульных тестов и вместо этого передали этот файл в опцию setupFiles.Тем не менее, для удобства обслуживания и для того, чтобы он работал с веб-пакетом для производства, я бы хотел сохранить все это в одном файле.Вот выдержка из того, как файл .env.js выглядит для справки
// .env.js extract example
process.env.PORT = 3000;
process.env.HOST = 'localhost';
process.env.CLIENT_ID = 'your client id';
process.env.REDIRECT_URI = 'your callback endpoint';