2016-04-27 5 views
1

モザを使ってMsSqlでNodeJSのテストをセットアップしようとしています。しかし、私は私のテストを実行するたびに、私は "接続が閉じて"取得します。mocha testing nodejs mssql - 接続が閉じています

enter image description here

私は自分自身でアプリを実行したときに奇妙なことは、それが動作しないということです、そして、私は戻って、データベースからデータを得るかとの接続は、あまりにもすぐに閉じられていません。

テストのための私のコード:

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でテスト中に動作しませんが、それ自体でアプリを実行するときはどうなりますか?私はここで何が欠けていますか?

答えて

1

フレームワークが開いていないため、接続が閉じられているようです。 私の接続を約束することができました。

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