Как установить для process.env значение undefined в шутку

Я пытаюсь выполнить модульное тестирование функции в своем приложении, которая проверяет значение 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 в шутливом тесте?


person im1dermike    schedule 24.03.2021    source источник
comment
Отвечает ли это на ваш вопрос? Протестируйте process.env с помощью Jest   -  person jonrsharpe    schedule 25.03.2021


Ответы (1)


Просто delete process.env.NODE_ENV.

E.g.

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
person slideshowp2    schedule 25.03.2021