我开始使用 jest,现在我需要测试回调。要知道何时调用回调,应根据文档使用 done():https ://jestjs.io/docs/en/asynchronous.html
但是 done() 未被识别为未定义,因此抛出此错误:
Test suite failed to run
TypeScript diagnostics (customize using `[jest-config].globals.ts-jest.diagnostics` option):
pathToErrorFile:line - error TS2304: Cannot find name 'done'.
63 done();
~~~~
//code to reproduce:
test('test', ()=>{
fkt(param, ()=>{
done();
});
});
Run Code Online (Sandbox Code Playgroud)
我已经用 node 和 angular 设置了 jest 并且在两个项目中都不存在这个功能。所以我想知道的是,这个功能甚至来自哪里以及我如何对其进行故障排除。请注意,其他所有内容(测试、描述等)都可以正常工作 done() 作为例外。
done未定义为全局变量。你把它传递给测试函数。
test('test', done => {
fkt(param, () => {
done();
});
});
Run Code Online (Sandbox Code Playgroud)
请注意,如果您指定done参数,如果done在测试完成后未调用该函数,则 jest 将检测到它并在超时时使测试失败。
如果
done()从未被调用,则测试将失败(出现超时错误),这正是您想要发生的。
然后,done即使测试失败,您也必须调用- 否则您将看不到错误。
如果我们想在测试日志中查看失败的原因,我们必须将 expect 包装在 try 块中,并将 catch 块中的错误传递给 done。否则,我们最终会得到一个不透明的超时错误,它没有显示 expect(data) 接收到的值。
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |