摩卡testingnodejs mssql – 连接已closures

尝试使用Mocha为使用MsSql的NodeJS设置testing。 但每次我运行我的testing,我得到一个“连接已closures”。

在这里输入图像说明

奇怪的是,当我自己运行应用程序时,它确实工作,然后,我从数据库中获取数据,并且连接没有太快closures。

我的testing代码:

var express = require('express'); var expect = require('chai').expect; var calendar = require('./../Server/calendarDatabase'); describe("Calendar", function () { describe("Database", function () { it("should get stuff from the database", function (done) { calendar.getAll().then(function (returnValue) { console.dir(returnValue); expect(returnValue.count).to.equal(5); done(); }); }); }); }); 

我的日历数据库代码看起来像

 var express = require('express'); var sql = require('mssql'); var config = require('./../config'); var calendarDbConnection = {}; sql.connect(config.mssql, function (err) { console.log(err); }); calendarDbConnection.getAll = function () { return new sql.Request() .query('select * from Human') .then(function (recordsets) { return recordsets; }) .catch(function (err) { console.log(err.message); }); } module.exports = calendarDbConnection; 

最后,这是我运行应用程序时使用的:

 var express = require('express'); var router = express.Router(); var calendarDb = require('./../Server/calendarDatabase'); router.get("/", function (request, response) { response.render('calendar', { title: 'Calendar app title' }); }); router.get('/getYear/:year', function (request, response) { calendarDb.getAll().then(function(returnValue) { console.dir(returnValue); }); response.send(); }); module.exports = router; 

所以我的问题是,为什么在使用Mocha进行testing时不能正常工作,但是在运行应用程序时呢? 我在这里错过了什么?

我的连接似乎是封闭的,因为框架没有保持开放。 使我的连接承诺工作。

 describe("Calendar", function () { describe("Database", function () { it("should get stuff from the database", function (done) { calendar.Connect().then(function () { calendar.getAll().then(function (returnValue) { console.dir(returnValue); expect(returnValue.count).to.equal(5); }).done(); }); }); }); }); 

日历数据库:

 calendarDbConnection.Connect = function() { return sql.connect(config.mssql); }