2015-01-05 4 views
1

Я пытаюсь запустить chai-тест, который соединяется с mongodb с помощью mongoose, но он терпит неудачу с «ожидаемым неопределенным быть объектом». Я использую тот же метод, который я использую в функционирующем приложении. Правильно ли подключаюсь к базе данных?Могу ли я подключиться к мангусте из теста?

var expect = require('chai').expect; 
var eeg = require('../eegFunctions'); 
var chai = require("chai"); 
var chaiAsPromised = require("chai-as-promised"); 
chai.use(chaiAsPromised); 
var mongoose = require('mongoose'); 
var db = mongoose.connection; 

db.on('error', console.error); 
db.once('open', function callback(){console.log('db ready');}); 

mongoose.connect('mongodb://localhost/eegControl'); 

test("lastShot() should return an object", function(){ 

    var data; 
    eeg.lastShot(function(eegData){ 
     data = eegData; 
    }); 
    return expect(data).to.eventually.be.an('object');   

}); 
+0

Какую линию вы получите эту ошибку на? EDIT: Nevermind ... answer coming ... – jakerella

+0

Какие еще рамки тестирования вы используете? Я имею в виду, что такое «тест»? – lante

ответ

1

Вы test is asynchronous, поскольку соединение Монго является асинхронным, так что вам нужно сделать утверждение произойдет, когда соединение установлено:

test("lastShot() should return an object", function(done){ // Note the "done" argument 

    var data; 
    eeg.lastShot(function(eegData){ 
     data = eegData; 

     // do your assertions in here, when the async action executes the callback... 
     expect(data).to.eventually.be.an('object'); 

     done(); // tell Mocha we're done with async actions 
    }); 

    // (no need to return anything) 
}); 
Смежные вопросы