【问题标题】:How to set process.env to undefined in jest如何在玩笑中将 process.env 设置为未定义
【发布时间】:2021-06-21 12:26:18
【问题描述】:

我正在尝试在我的应用程序中对一个检查process.env.NODE_ENV 值的函数进行单元测试。 FWIW process.env.NODE_ENV 的类型是 string | undefined。

在我的玩笑测试中,我可以轻松地测试这样设置的字符串值:

it('test', () => {
  // Arrange
  process.env.NODE_ENV = 'development';

  // Act
  functionUnderTest();

  // Assert
  export(true).toBe(true);
});

当我想测试我的代码对process.env.NODE_ENV 设置为undefined 的处理时,就会出现问题。我希望能够在我的笑话测试中简单地设置process.env.NODE_ENV = undefined。不幸的是,似乎在某个地方,该值被转换为string,这样当测试命中我的函数时,process.env.NODE_ENV 的值是"undefined"(作为字符串)。

我也尝试像这样将process.env.NODE_ENV 设置为undefined,但结果相同:

process.env = Object.assign(process.env, { NODE_ENV: undefined });

如何在开玩笑测试中将process.env.NODE_ENV 设置为undefined?

【问题讨论】:

标签: node.js unit-testing jestjs ts-jest


【解决方案1】:

只需deleteprocess.env.NODE_ENV。

例如

function functionUnderTest() {
  return process.env.NODE_ENV;
}

describe('66787053', () => {
  it('test', () => {
    process.env.NODE_ENV = 'development';
    const actual = functionUnderTest();
    expect(actual).toBe('development');
  });

  it('should pass', () => {
    delete process.env.NODE_ENV;
    const actual = functionUnderTest();
    expect(actual).toBeUndefined();
  });
});

测试结果:

 PASS  examples/66787053/index.test.js (6.951 s)
  66787053
    ✓ test (2 ms)
    ✓ should pass

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        9.061 s

【讨论】:

    【解决方案2】:

    这对我有用。在package.json

      "jest": {
        "rootDir": "./src",
        "setupFiles": [
          "<rootDir>/jest.env.js"
        ]
      }
    

    src/jest.env.js 看起来像

    process.env.REGION = 'us-west-2'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 2019-09-25
      • 2021-07-17
      • 2018-06-02
      • 2021-09-17
      • 2017-11-01
      相关资源
      最近更新 更多