使用Jest测试Node.js中的Azure函数-process.env变量显示未定义

时间:2019-04-22 07:02:22

标签: node.js jestjs azure-functions

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

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

1 个答案:

答案 0 :(得分: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
  });
});

希望有帮助。