jestjs - 开玩笑的方法 done() 没有定义
问题描述
我开始使用 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();
});
});
我已经用节点和角度设置了玩笑,在这两个项目中这个功能都不存在。所以我想知道的是,这个函数是从哪里来的,我该如何解决它。请注意,其他所有内容(测试、描述等)都可以正常工作 done() 作为其例外。
解决方案
done
未定义为全局变量。你把它传递给测试函数。
test('test', done => {
fkt(param, () => {
done();
});
});
请注意,如果您指定参数,如果在测试完成后未调用done
该函数,jest 将检测到它并在超时时使测试失败。done
如果
done()
从不调用,则测试将失败(出现超时错误),这是您想要发生的。
done
然后,即使测试失败,您也必须调用- 否则您将看不到错误。
如果我们想在测试日志中查看失败的原因,我们必须将 expect 包装在 try 块中,并将 catch 块中的错误传递给 done。否则,我们最终会出现一个不透明的超时错误,该错误不会显示 expect(data) 接收到的值。
推荐阅读
- reactjs - 反应路由后如何运行http-proxy-middleware?
- eclipse - 无法使用“http://dl.microsoft.com/eclipse/tfs”url 在 Eclipse 中下载 TFS 插件
- node.js - 如何在 Google App Engine 中发布 Nestjs api?
- kafka-consumer-api - Kafka 消费者仅消费 1 条最近的记录
- java - 需要帮助通过省略其中一些来计算数字的总和
- azure-devops - 在 Azure DevOps 中的不同项目之间共享变量
- sql-server - 在连接中使用子选择来更新表?
- javascript - 如何使用密码验证确认密码并在每个字符处显示错误消息?
- python - 如何修复两个单独文件中的循环导入错误?
- swift - AVPlayerViewControllerDelegate.playerViewController(_:willResumePlaybackAfterUserNavigatedFrom:to:) 没有调用