使用 Jest 在 Nodejs 中测试 Azure 函数 - process.env 变量显示未定义
Posted
技术标签:
【中文标题】使用 Jest 在 Nodejs 中测试 Azure 函数 - process.env 变量显示未定义【英文标题】:Test for Azure function in Nodejs using Jest - process.env variable showing undefined 【发布时间】:2019-09-11 09:53:41 【问题描述】:由于“process.env 变量未定义”,Azure 函数测试(使用 jest)失败。现有代码在正常调试中完美运行,但在“yarn run jest”命令中,它显示 process.env 变量未定义。每个配置都存储在 local.settings.json 中。
我试过“test process.env with Jest”这个链接。但是我的生产服务器不能接受多个声明
【问题讨论】:
【参考方案1】:你可以在 beforeEach 方法中使用 jest.resetModules() 来重置已经需要的模块
beforeEach(() =>
jest.resetModules()
process.env = ...OLD_ENV ;
delete process.env.NODE_ENV;
);
在这里您可以找到完整的指南。
https://jestjs.io/docs/en/jest-object.html#jestresetmodules
您发布的链接是通过创建如下实现的理想方式
describe('environmental variables', () =>
const OLD_ENV = process.env;
beforeEach(() =>
jest.resetModules() // this is important
process.env = ...OLD_ENV ;
delete process.env.NODE_ENV;
);
afterEach(() =>
process.env = OLD_ENV;
);
test('will receive process.env variables', () =>
// set the variables
process.env.NODE_ENV = 'dev';
process.env.PROXY_PREFIX = '/new-prefix/';
process.env.API_URL = 'https://new-api.com/';
process.env.APP_PORT = '7080';
process.env.USE_PROXY = 'false';
const testedModule = require('../../config/env').default
// ... actual testing
);
);
希望对你有帮助。
【讨论】:
感谢您的回复,但在我的代码中,我没有任何 .env 文件。它将取自“local.settings.json”文件。那我该如何联系呢?以上是关于使用 Jest 在 Nodejs 中测试 Azure 函数 - process.env 变量显示未定义的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NodeJS 解决 Supertest 和 jest 中的 ECONNREFUSED 错误?