Typescript Jest.js:在Jest中返回为{}的布尔返回值
在下面的返回之前,我记录了false的预期值,这让我很困惑,因为我不知道Typescript Jest.js:在Jest中返回为{}的布尔返回值,typescript,jestjs,Typescript,Jestjs,在下面的返回之前,我记录了false的预期值,这让我很困惑,因为我不知道{}是从哪里来的。有人知道原因吗 FAIL functions/src/classes/__tests__/ScriptTag.test.ts constructor ✕ exists() returns false for no matching scriptTag from fake fetch (13ms) ● constructor › exists() returns false for no
{}
是从哪里来的。有人知道原因吗
FAIL functions/src/classes/__tests__/ScriptTag.test.ts
constructor
✕ exists() returns false for no matching scriptTag from fake fetch (13ms)
● constructor › exists() returns false for no matching scriptTag from fake fetch
expect(received).toStrictEqual(expected) // deep equality
Expected: false
Received: {}
168 | const scriptTagTester = new ScriptTagTester("","", "https://firebaseDomain.com/scriptTag.js");
169 |
> 170 | await expect(scriptTagTester.exists()).toStrictEqual(false);
| ^
171 |
172 | })
173 |
console.log functions/src/classes/ScriptTag.ts:79
[ 'somescript.js', 'somescript2.js', 'somescript3.js', 'scriptTag.js' ] =====scriptTagFileNames=====
console.log functions/src/classes/ScriptTag.ts:81
true =====found===== // this is for a prior test and probably unrelated
console.log functions/src/classes/ScriptTag.ts:79
[ 'somescript.js', 'somescript2.js' ] =====scriptTagFileNames=====
console.log functions/src/classes/ScriptTag.ts:81
false =====found=====
Test Suites: 1 failed, 1 total
Tests: 1 failed, 6 passed, 7 total
这是测试类和目标类。我正在扩展目标类,以便将其所有方法公开以供测试
ScriptTag.test.js
:
test("exists() returns false for no matching scriptTag from fake fetch", async() => {
jest.spyOn(ScriptTagTester.prototype, "fetchAllScriptTags")
.mockResolvedValueOnce(dummyScriptTagsMissingTarget);
const scriptTagTester = new ScriptTagTester("","", "https://firebaseDomain.com/scriptTag.js");
await expect(scriptTagTester.exists()).toStrictEqual(false);
})
ScriptTag.ts
:
protected async exists():Promise{
常量scriptTags:ScriptTagObject[]=等待此操作。fetchAllScriptTags();
常量ScriptTagFileName:string[]=scriptTags.map((scriptTagRecord:ScriptTagObject)=>{
const tagFileName:string=this.getFileName(scriptTagRecord.src);
返回标记文件名;
});
//如果有索引,则返回true,否则返回false
log(scriptTagFileNames,`==scriptTagFileNames===`);
const fileIsFound:boolean=boolean(scriptTagFileNames.indexOf(this.localFileName)>-1);
日志(fileIsFound,`==found===log);
找到返回文件;
}
因此,您应该使用.resolves
afterexpect
函数
简短的anwser:
wait expect(scriptTagTester.exists()).resolves.toStrictEqual(false);
例如
ScriptTag.ts
:
导出接口ScriptTagObject{
src:字符串;
}
导出类ScriptTag{
localFileName='b.js';
构造函数(a,b,c){}
受保护的异步存在():承诺{
常量scriptTags:ScriptTagObject[]=等待此操作。fetchAllScriptTags();
常量ScriptTagFileName:string[]=scriptTags.map((scriptTagRecord:ScriptTagObject)=>{
const tagFileName:string=this.getFileName(scriptTagRecord.src);
返回标记文件名;
});
log(scriptTagFileNames,`==scriptTagFileNames===`);
const fileIsFound:boolean=boolean(scriptTagFileNames.indexOf(this.localFileName)>-1);
日志(fileIsFound,`==found===log);
找到返回文件;
}
受保护的异步fetchAllScriptTags():Promise{
返回[{src:'a'}];
}
私有getFileName(src){
返回src;
}
}
ScriptTag.test.ts
:
从“/ScriptTag”导入{ScriptTag,ScriptTagObject};
类ScriptTagTester扩展了ScriptTag{
建造师(a、b、c){
超级(a、b、c);
}
}
描述('ScriptTag',()=>{
test('exists()返回false,表示伪获取中没有匹配的scriptTag',async()=>{
常量dummyScriptTagsMissingTarget:ScriptTagObject[]=[
{src:'somescript.js'},
{src:'somescript2.js'},
{src:'somescript3.js'},
{src:'scriptTag.js'},
];
开玩笑
.spyOn(ScriptTagTester.prototype作为任何“fetchAllScriptTags”)
.mockResolvedValueOnce(dummyScriptTagsMissingTarget);
常量scriptTagTester=新scriptTagTester(“”,,'https://firebaseDomain.com/scriptTag.js');
wait expect((scriptTagTester,如有).exists()).resolves.toStrictEqual(false);
});
});
单元测试结果和覆盖率报告:
PASS src/stackoverflow/59310993/ScriptTag.test.ts
脚本标签
✓ exists()返回false,因为fake fetch中没有匹配的scriptTag(18ms)
console.log src/stackoverflow/59310993/ScriptTag.ts:3266
['somescript.js',
'somescript2.js',
'somescript3.js',
'scriptTag.js']'====scriptTag文件名====='
console.log src/stackoverflow/59310993/ScriptTag.ts:3274
false'====找到====='
--------------|----------|----------|----------|----------|-------------------|
文件|%Stmts |%Branch |%Funcs |%Line |未覆盖行|s|
--------------|----------|----------|----------|----------|-------------------|
所有文件| 94.44 | 100 | 83.33 | 93.75 ||
ScriptTag.ts | 94.44 | 100 | 83.33 | 93.75 | 25|
--------------|----------|----------|----------|----------|-------------------|
测试套件:1个通过,共1个
测试:1项通过,共1项
快照:共0个
时间:5.86秒,估计16秒
源代码: