Node.js Mongoose插入在单元测试中永远不会返回

Node.js Mongoose插入在单元测试中永远不会返回,node.js,mongoose,mocha.js,passport.js,kraken.js,Node.js,Mongoose,Mocha.js,Passport.js,Kraken.js,我正在创建一个单元测试来测试Passport,第一步是创建一个用户。创建用户超时,测试无法进行 测试(login.js): 如果我直接将o连接到mongoose: mongoose.connect("mongodb://localhost/testing"); 并以这种方式要求用户: User = require('../models/user'); 它起作用了 我想使用beforeach与kraken建立的服务器和连接,以便在配置的数据库中进行插入 问题是为什么mongoose插件在测试中

我正在创建一个单元测试来测试Passport,第一步是创建一个用户。创建用户超时,测试无法进行

测试(login.js):

如果我直接将o连接到mongoose:

mongoose.connect("mongodb://localhost/testing");
并以这种方式要求用户:

User = require('../models/user');
它起作用了

我想使用
beforeach
与kraken建立的服务器和连接,以便在配置的数据库中进行插入


问题是为什么mongoose插件在测试中永远不会返回?

您需要在测试代码中调用
mongoose.connect
。mongoose将所有挂起的操作排队等待,直到建立第一个db连接,这就是为什么您的
save
回调从未被调用。

正如@Peter Lyons所指出的,我需要执行到数据库的连接

为此,我编写了一个小助手(可以在测试文件中使用)

db.js:

'use strict';
var nconf = require('nconf'),
    mongoose = require('mongoose'),
    env = process.env.NODE_ENV || 'testing';

//get the db config stuff for mongoose from the application config file
nconf.use('file', {
    file: process.cwd() + '/config/app.json',
    format: nconf.formats.json
});
var dbConf = nconf.get('databaseConfig')[env];



var db = function() {
    return {
        connect: function() {
            if(!mongoose.connection.db) {
                mongoose.connect("mongodb://" + dbConf.host + '/' + dbConf.database);
            }
        }
    };
};

module.exports = db();
然后在我的测试中:

var db = require('./db');

db.connect();

模型类的性能与预期一致。

我不清楚您的意思。。。我假设没有调用传递给
user.save
的回调,因此测试超时。我说得对吗?
var db = require('./db');

db.connect();