带有Node-postgresl更新查询的Node.js的Mocha测试由于异步/等待而挂起

问题描述

有人可以告诉我这段代码为什么起作用:

const articleUpdated = async(pool: Pool,author: String): Promise<void> => {
  const query = {
    text:
      'UPDATE articles SET end_time=Now(),author=$1',values: [author],}

pool.query(query)
  .then(result => { console.error('Test'); result.rows })
  .catch(error => console.error(error))
}

此挂起时:

const articleUpdated = async(pool: Pool,values: ['test'],}

let { rows } = await pool.query(query)
console.log(rows)

}

上面的代码在正常应用中运行没有问题。但是,当我通过Mocha编写测试代码时,第一个包含query / then / catch的代码片段可以正常工作,并且测试顺利完成。但是,如果我使用async / await将代码更改为代码段2,则测试执行将挂在await pool.query(query)行。

代码不是直接通过Mocha调用的,而是通过其他模块之一调用的,而这些模块依次调用了上面的代码。我逐行执行测试,每次执行挂起时,await pool.query(query)都将其挂起。

我的猜测是,可能是某些承诺未返回或未完成-或更新查询未更新任何记录。不确定。

就像我之前提到的,上面的代码是通过集成测试(在父方法上使用await调用的。调用与运行应用程序时的调用完全相同。

对于故障排除的任何提示,想法或建议,我们将不胜感激。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...