Here is the unit test solution:
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");
});
});
Unit test result with coverage report:
PASS src/stackoverflow/58948797/index.spec.ts
main
✓ should enable (13ms)
✓ should disable (1ms)
console.log node_modules/jest-mock/build/index.js:860
enable redis cache
console.log node_modules/jest-mock/build/index.js:860
disable redis cache
----------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files | 100 | 75 | 100 | 100 | |
index.ts | 100 | 75 | 100 | 100 | 2 |
----------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 4.07s, estimated 9s
Source code: https://github.com/mrdulin/jest-codelab/tree/master/src/stackoverflow/58948797