开玩笑 - "Cannot log after tests are done." 导入函数时遇到问题



我最近回到一个测试文件,我得到一个以前没有出现的错误。只有当我为测试导入一些函数时才会发生这种情况:

const { _callXTimes, _itemFind, _chancePTFind, activityItemFind } = require('../../game/activities/activityItemFind');
There are no errors in the tests that use these functions... it's purely happening after I import this file. It also didn't used to cause this error. 

错误:测试完成后无法记录日志。您是否忘记在测试中等待异步内容?试图记录"执行(默认):SELECT 1+1 AS result"。

at CustomConsole.log (node_modules/@jest/console/build/CustomConsole.js:185:10)
at Sequelize.log (node_modules/sequelize/lib/sequelize.js:1094:23)
at Query.run (node_modules/sequelize/lib/dialects/postgres/query.js:74:22)
at node_modules/sequelize/lib/sequelize.js:561:20
at tryCatcher (node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (node_modules/bluebird/js/release/promise.js:547:31)
at Promise._settlePromise (node_modules/bluebird/js/release/promise.js:604:18)
at Promise._settlePromise0 (node_modules/bluebird/js/release/promise.js:649:10)
at Promise._settlePromises (node_modules/bluebird/js/release/promise.js:729:18)
at _drainQueueStep (node_modules/bluebird/js/release/async.js:93:12)

Jest在测试运行完成后一秒钟未退出。

这通常意味着在测试中存在未停止的异步操作。考虑在--detectOpenHandles上运行Jest来解决这个问题。

我不知道为什么测试运行器从文件导入中挂起。什么好主意吗?

当您测试异步函数而不等待它完成时,就会发生这种情况。例如,下面的测试也会抛出相同的错误。

function getData() {
setTimeout(() => console.log("Hello"), 2000);
return 2;
}
test("should pass", () => {
expect(getData()).toEqual(2);
});

你需要学习如何正确地测试异步函数。这里是一个简短的指南,来自笑话文档。异步示例

最新更新