运行 jest 时设置 env 变量

San*_*Rey 5 javascript unit-testing node.js typescript jestjs

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

const mockMode = process.env.MOCK_MODE;
Run Code Online (Sandbox Code Playgroud)

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

describe('onBook', () => {

    // Arrange
     const mockMode = "true";
     ...
Run Code Online (Sandbox Code Playgroud)

sli*_*wp2 6

process.env.MOCK_MODE您可以直接在单元测试用例中设置 的值,并在最后将其恢复为原始值。

\n\n

例如

\n\n

main.ts:

\n\n
export function main() {\n  const mockMode = process.env.MOCK_MODE;\n  return mockMode;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

main.test.ts:

\n\n
import { main } from \'./main\';\n\ndescribe(\'main\', () => {\n  it(\'should pass\', () => {\n    const original = process.env.MOCK_MODE;\n    process.env.MOCK_MODE = \'true\';\n    const actual = main();\n    expect(actual).toBe(\'true\');\n    process.env.MOCK_MODE = original;\n  });\n  it(\'should restore MOCK_MODE\', () => {\n    expect(process.env.MOCK_MODE).toBe(\'undefined\');\n  });\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

单元测试结果:

\n\n
 PASS  src/stackoverflow/59319610/main.test.ts (14.207s)\n  main\n    \xe2\x9c\x93 should pass (7ms)\n    \xe2\x9c\x93 should restore MOCK_MODE (1ms)\n\nTest Suites: 1 passed, 1 total\nTests:       2 passed, 2 total\nSnapshots:   0 total\nTime:        16.293s\n
Run Code Online (Sandbox Code Playgroud)\n

  • 如果测试失败,这将不起作用。为此,您应该使用“afterEach”。 (4认同)