Node.js 节点Js jest测试用例

Node.js 节点Js jest测试用例,node.js,jestjs,testcase,Node.js,Jestjs,Testcase,我的服务文件中有一个条件 const RedisEnableCache=process.env.REDIS_ENABLE_CACHE | false 我的服务文件中有这两个条件的代码,如何在测试用例中同时覆盖测试文件,即true和false。我必须编写两个测试用例,一个是true条件,另一个是false条件。如何做到这一点?以下是单元测试解决方案: index.ts: export function main(){ const RedisEnableCache=process.env.REDI

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

const RedisEnableCache=process.env.REDIS_ENABLE_CACHE | false

我的服务文件中有这两个条件的代码,如何在测试用例中同时覆盖测试文件,即true和false。我必须编写两个测试用例,一个是true条件,另一个是false条件。如何做到这一点?

以下是单元测试解决方案:

index.ts

export function main(){
const RedisEnableCache=process.env.REDIS_ENABLE_CACHE | | false;
如果(可重新启用缓存==“true”){
log(“启用redis缓存”);
}否则{
log(“禁用redis缓存”);
}
}
索引规范ts

从“/”导入{main};
描述(“主”,()=>{
const originalEnv=process.env.REDIS\u ENABLE\u缓存;
毕竟(()=>{
process.env.REDIS\u ENABLE\u CACHE=originalEnv;
开玩笑。恢复记忆();
});
它(“应该启用”,()=>{
process.env.REDIS\u ENABLE\u CACHE=“true”;
const logSpy=jest.spyOn(控制台,“日志”);
main();
expect(logSpy).toBeCalledWith(“启用redis缓存”);
});
它(“应该禁用”,()=>{
process.env.REDIS\u ENABLE\u CACHE=“false”;
const logSpy=jest.spyOn(控制台,“日志”);
main();
expect(logSpy).toBeCalledWith(“禁用redis缓存”);
});
});
单元测试结果和覆盖率报告:

PASS src/stackoverflow/58948797/index.spec.ts
主要的
✓ 应启用(13毫秒)
✓ 应禁用(1ms)
console.log node_modules/jest mock/build/index.js:860
启用redis缓存
console.log node_modules/jest mock/build/index.js:860
禁用redis缓存
----------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
----------|----------|----------|----------|----------|-------------------|
所有文件| 100 | 75 | 100 | 100 ||
index.ts | 100 | 75 | 100 | 100 | 2|
----------|----------|----------|----------|----------|-------------------|
测试套件:1个通过,共1个
测试:2次通过,共2次
快照:共0个
时间:4.07秒,估计9秒

源代码:

这是否回答了您的问题?