我的服务文件中有一个条件,
const RedisEnableCache = process.env.REDIS_ENABLE_CACHE || false
我的服务文件中同时包含这两种情况的代码,如何在测试用例中同时覆盖测试文件,即true和false。我必须编写两个具有真实条件的测试用例,另一个编写具有真实条件的测试用例。错误。该怎么办?
答案 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