摩卡测试nodejs mssql-连接已关闭

cks虫

尝试使用Mocha使用MsSql设置针对NodeJS的测试。但是,每次运行测试时,都会出现“连接已关闭”的信息。

在此处输入图片说明

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

我的测试代码:

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();
            });
        });
    });
});

我的calendarDatabase代码看起来像什么

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进行测试时这不起作用,而在本身运行该应用程序时却起作用呢?我在这里想念什么?

cks虫

由于框架无法保持打开状态,因此我的连接似乎已关闭。使我的联系成为一个承诺是可行的。

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);    
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章