我有一个 node.js 数据处理应用程序,它从 mssql 中提取一些数据。它运行良好并产生预期的结果。但是,集成测试不起作用,我希望他们这样做。
下面是连接管理和测试查询功能。我可以从输出和调试器中的运行中看到,在数据库连接之前,测试已经运行但失败了。所以看起来我的 Mocha 异步设置不起作用,但它看起来像我在文档中看到的一切。
节点 -v v10.15.0
柴:“^4.2.0”,摩卡:“^5.2.0” mssql:“^4.3.0”,
const config = require('./config')
const _ = require('underscore')
const sql = require('mssql')
sql.on('error', err => {
console.error('SQL Error', err)
})
let api = {}
api.connect = async dbConfig => {
return new sql.ConnectionPool(dbConfig).connect(
err => {
if (err)
console.error('Connection error', err)
else
console.log('connected')
})
}
var connecting = api.connect(config.sql)
api.simple = async () => {
let pool = await connecting
let result = await pool.request().query('select 1 as number')
return result.recordset[0].number
}
module.exports = api
这是我的摩卡测试失败
const { expect } = require('chai')
const data = require('../src/data')
describe('data access', function () {
it('is simple', async function () {
const yo = await data.simple()
expect(yo).to.exist
expect(yo).to.equal(1)
})
})
我还尝试过使用 done 回调 ala 的旧式异步 mocha 测试
it('is simple oldschool', function (done) {
data.simple()
.then(function(yo){
expect(yo).to.exist
expect(yo).to.equal(1)
done()
})
})
无论我将 Mocha 的超时设置多长时间都会超时(我尝试了高达 60 秒)
我在这里不知所措,有人发现有什么问题吗?
api.connect
可以在连接实际完成之前返回。像这样重写它将确保ConnectionPool.connect
可以在api.connect
承诺解决之前完成。
api.connect = dbConfig =>
new Promise((resolve, reject) => {
const pool = new sql.ConnectionPool(dbConfig);
pool.connect(err => {
if (err) {
console.error("Connection error", err);
return reject(err);
}
return resolve(pool);
});
});
除此之外,我很困惑let pool = await c3
;c3
您粘贴的代码中没有符号...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句