我正在使用knex池进行mocha测试。
我遇到的问题是测试结束时,它会一直等到knex池耗尽,并且需要额外的秒数(约5-10)来完成mocha运行。
代码示例:
knex初始化:
const Knex = require('knex');
const knex = new Knex({
client: 'pg',
pool: { min: 1, max: 10 },
connection: {},
searchPath: 'knex,public',
// debug: true,
});
摩卡测试排水连接:
after((done) => {
knex.destroy().then(done);
})
我想要完成的任务是:
有什么建议吗?
答案 0 :(得分:0)
此功能在mocha之前发生了变化
2879:默认情况下,一旦所有测试完成,Mocha将不再强制进程退出。这意味着任何测试代码(或测试中的代码)
通常会阻止节点退出的在运行时会这样做 摩卡。提供--exit标志以恢复到v4.0.0之前的行为 (@ScottFreeCode,@ boneskull)
https://github.com/mochajs/mocha/blob/master/CHANGELOG.md
如果上述方法没有帮助,您可以随时调用process.exit(0)来强制终止,并使用成功退出代码。
在knex方面的AFAIK没有用于强制终止连接的强制选项。
答案 1 :(得分:0)
这将帮助您避免连接中断。
const config = {
client: "pg",
connection: {
host: hostname,
user: username,
password: password,
database: datbase
},
pool: {
min: 0,
max: 10
},
acquireConnectionTimeout: 1000
}
var Knex = require('knex')
this.functioname = () => {
var output = {}
return new Promise(function (resolve) {
var knex = new Knex(config)
knex(tablename)
.select()
.then((result) => {
if (result.length > 0) {
output.error = false
output.result = result
} else {
output.error = true
}
resolve(output)
})
.catch((err) => {
err.error = true
resolve(err)
})
.finally(() => {
knex.destroy()
})
})
}