網站搜尋

javascript - 在運行 jest 時設置環境變量


我在我的 main.ts 中定義了這個變數

const mockMode = process.env.MOCK_MODE;

我剛建立了一個測試並將這個變數設為 true,但在主程式中得到的不是 'true',而是 'false'

describe('onBook', () => {

    // Arrange
     const mockMode = "true";
     ...

答案#1

你可以直接在單元測試案例中設置 process.env.MOCK_MODE 的值,並在結束時將其恢復為原始值。

例如

main.ts:

export function main() {
  const mockMode = process.env.MOCK_MODE;
  return mockMode;
}

main.test.ts:

import { main } from './main';

describe('main', () => {
  it('should pass', () => {
    const original = process.env.MOCK_MODE;
    process.env.MOCK_MODE = 'true';
    const actual = main();
    expect(actual).toBe('true');
    process.env.MOCK_MODE = original;
  });
  it('should restore MOCK_MODE', () => {
    expect(process.env.MOCK_MODE).toBe('undefined');
  });
});

單元測試結果:

 PASS  src/stackoverflow/59319610/main.test.ts (14.207s)
  main
    ✓ should pass (7ms)
    ✓ should restore MOCK_MODE (1ms)

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