Javascript 测试后连接未关闭?
我有一个简单的postgres.js包装文件Javascript 测试后连接未关闭?,javascript,node.js,jestjs,node-postgres,Javascript,Node.js,Jestjs,Node Postgres,我有一个简单的postgres.js包装文件 const pg = require("pg") const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL }); function close() { return pool.end() } module.exports = { end: pool.end, close }; 运行利用上述postgres库的jest测试用例,如下所示:
const pg = require("pg")
const pool = new pg.Pool({ connectionString: process.env.DATABASE_URL });
function close() {
return pool.end()
}
module.exports = {
end: pool.end,
close
};
运行利用上述postgres库的jest测试用例,如下所示:
const postgres = require("./path/to/postgres.js");
describe("Foo", () => {
afterAll(() => {
return postgres.end();
})
it(...)
});
将产生“这通常意味着在测试中存在未停止的异步操作”错误消息并挂起
但是,如果我将行postgres.end()
更改为postgres.close()
,它将正确地关闭DB连接,并在测试完成后终止jest
我的问题是,
关闭
和结束
在功能上不做相同的事情吗?为什么一个关闭连接而另一个不关闭?您的end
函数只是执行pool.end
而不是将其作为承诺返回,因此它不类似。
为了更好地可视化,您当前的代码基本上是这样做的:
function close() {
return pool.end()
}
function end() {
pool.end()
}
module.exports = {
end,
close
};
end:pool.end.bind(pool)
?考虑到这一差异,我猜这是一个绑定问题。你为什么认为承诺没有得到回报?