У меня есть приложение для обработки данных 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)
})
})
Я также пробовал старый стиль асинхронных мокко-тестов с использованием готовых обратных вызовов аля
it('is simple oldschool', function (done) {
data.simple()
.then(function(yo){
expect(yo).to.exist
expect(yo).to.equal(1)
done()
})
})
Это время истекает независимо от того, как долго я устанавливаю тайм-аут Mocha (я пробовал до 60 секунд)
Я в своем уме здесь, кто-нибудь видит что-то не так?