【问题标题】:Test for Azure function in Nodejs using Jest - process.env variable showing undefined使用 Jest 在 Nodejs 中测试 Azure 函数 - process.env 变量显示未定义
【发布时间】:2019-09-11 09:53:41
【问题描述】:

由于“process.env 变量未定义”,Azure 函数测试(使用 jest)失败。现有代码在正常调试中完美运行,但在“yarn run jest”命令中,它显示 process.env 变量未定义。每个配置都存储在 local.settings.json 中。

我试过“test process.env with Jest”这个链接。但是我的生产服务器不能接受多个声明

【问题讨论】:

    标签: node.js jestjs azure-functions


    【解决方案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”文件。那我该如何联系呢?
    猜你喜欢
    • 2023-04-02
    • 2021-03-11
    • 2018-06-10
    • 2019-10-26
    • 2019-02-03
    • 1970-01-01
    • 2020-05-06
    • 2018-05-13
    • 1970-01-01
    相关资源
    最近更新 更多