Node Js开玩笑的测试用例

时间:2019-11-20 07:21:23

标签: node.js jestjs testcase

我的服务文件中有一个条件,

const RedisEnableCache = process.env.REDIS_ENABLE_CACHE || false

我的服务文件中同时包含这两种情况的代码,如何在测试用例中同时覆盖测试文件,即true和false。我必须编写两个具有真实条件的测试用例,另一个编写具有真实条件的测试用例。错误。该怎么办?

1 个答案:

答案 0 :(得分:0)

这是单元测试解决方案:

packagingOptions

index.ts

export function main() { const RedisEnableCache = process.env.REDIS_ENABLE_CACHE || false; if (RedisEnableCache === "true") { console.log("enable redis cache"); } else { console.log("disable redis cache"); } }

index.spec.ts

带有覆盖率报告的单元测试结果:

import { main } from "./";

describe("main", () => {
  const originalEnv = process.env.REDIS_ENABLE_CACHE;
  afterAll(() => {
    process.env.REDIS_ENABLE_CACHE = originalEnv;
    jest.restoreAllMocks();
  });
  it("should enable", () => {
    process.env.REDIS_ENABLE_CACHE = "true";
    const logSpy = jest.spyOn(console, "log");
    main();
    expect(logSpy).toBeCalledWith("enable redis cache");
  });

  it("should disable", () => {
    process.env.REDIS_ENABLE_CACHE = "false";
    const logSpy = jest.spyOn(console, "log");
    main();
    expect(logSpy).toBeCalledWith("disable redis cache");
  });
});

源代码:https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/58948797