【问题标题】:set env variable when Running jest运行 jest 时设置环境变量
【发布时间】:2020-04-06 17:33:39
【问题描述】:

我在 main.ts 上定义了这个变量

const mockMode = process.env.MOCK_MODE;

我只是创建了一个测试并将这个变量设置为true,但是在main上并没有得到'true',而是'false'

describe('onBook', () => {

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

【问题讨论】:

标签: javascript node.js typescript unit-testing jestjs


【解决方案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

【讨论】:

  • 并行运行测试时如何使用它? process.env 是否也针对每个测试进行沙盒处理?
  • 如果测试失败,这将不起作用。您应该为此使用afterEach
猜你喜欢
  • 2011-02-14
  • 2020-01-12
  • 1970-01-01
  • 2021-01-04
  • 2019-10-02
  • 2020-12-17
  • 2020-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多