无法从mocha测试连接到mongodb

时间:2013-08-28 22:01:14

标签: mongodb mongoose mocha

从REPL连接工作正常:

> var mongoose=require('mongoose');
undefined
> mongoose.connect('mongodb://localhost/test', function(error) {
... console.log( 'connected\n%s\n', error );
... });

返回:

{ connections: 
   [ { base: [Circular],
       collections: {},
       models: {},
       replica: false,
       hosts: null,
       host: 'localhost',
       port: 27017,
       user: undefined,
       pass: undefined,
       name: 'test',
       options: [Object],
       _readyState: 2,
       _closeCalled: false,
       _hasOpened: false,
       _listening: false,
       _events: {},
       db: [Object] } ],
  plugins: [],
  models: {},
  modelSchemas: {},
  options: {} }
> connected # Yes!
undefined

但是从Mocha测试套件连接不起作用:

var mongoose = require( 'mongoose' );
console.log( 'connecting...' );

mongoose.connect( 'mongodb://localhost/test', function( error ) {
    if( error) console.error( 'Error while connecting:\n%\n', error );

    console.log( 'connected' );
});

返回:

$ mocha
connecting...



  0 passing (0 ms)

有谁知道为什么这不起作用?

1 个答案:

答案 0 :(得分:3)

你的套房里有没有测试?如果没有,似乎mocha退出之前mongoose有机会连接。 mocha页面上列出的功能之一是

  

自动退出以防止“挂起”活动循环

可能与它有关。您可以尝试在测试套件的before方法中连接到mongoose,例如

describe('test suite', function() {
    before(function(done) {
        mongoose.connect('mongodb://localhost/test', function(error) {
            if (error) console.error('Error while connecting:\n%\n', error);
            console.log('connected');
            done(error);
        });
    });
});