Javascript 测试后连接未关闭?

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测试用例,如下所示:

我有一个简单的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 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)
?考虑到这一差异,我猜这是一个绑定问题。你为什么认为承诺没有得到回报?