node-mssql 在运行 Mocha 测试时“连接已关闭”,但在应用程序中运行良好

微生物

我有一个 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 秒)

我在这里不知所措,有人发现有什么问题吗?

AKX

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 c3c3您粘贴的代码中没有符号...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MSSQL Server:正在运行存储过程

运行node-mssql查询时出错

如何检测Mocha测试是否在node.js中运行?

在运行Mocha测试之前删除MongoDB数据库

声明在编译时有效,但在运行Mocha测试时无效

测试执行后函数运行前的 node.js mocha

Node express 应用程序调用 mssql 说连接已关闭

Node.js应用程序在本地主机上运行良好,但在Heroku上部署时显示错误

动态运行Mocha测试

在运行Mocha测试时混合使用打字稿和JavaScript模块

为什么在运行 mocha 时找不到我的测试文件?

使用babel-node和babel-istanbul运行Mocha测试时加载CSS时出错

如何在团队城市中添加构建步骤以运行Node Js单元测试(Mocha框架)

如何让node.js和Mocha在浏览器中运行(测试)?

如何在 mocha 测试中获取风帆应用程序的运行时 URL

Mocha测试无法在Node.js服务器上运行

Node.js + Chai / Mocha / Should:针对同一响应运行多个测试

运行开始脚本/ w local nodemon / mocha / babel-node时,Linux上的Node中的“权限被拒绝”

为什么较新版本的 mocha 在运行 npm test 时不输出测试详细信息?

在node_modules /中使用ES6文件运行Mocha时出错

查询在运行时间较长的地方失败(仅在php下的mssql server 2005)

在运行时获取node.js版本

ChildProcess正在运行还是死了?-node.js

如何检测Node派生进程是否仍在运行?

在测试设备上调试时,应用程序运行良好,但在发行版apk中无法运行,它无法从firebase中获取post.class变量

Kivy 应用程序在开发中运行良好,但在生成发布时抛出错误

在使用nyc运行mocha时指定mocha.opts的位置?

Mocha:以编程方式运行Mocha时获取stacktrace

Node 应用程序没有在我的 PC 上运行,但在我团队的其他 PC 上运行良好(使用 Git)