У меня возникли проблемы написания тестов для моих Mongoose моделей и мой экспресс-приложений (маршрутов)Тайм-аут при выполнении теста мокко на модели мангустов и экспресс-маршрут
У меня есть очень простой app.js
файл:
var env = process.env.NODE_ENV || 'development',
express = require('express'),
config = require('./config/config')[env],
http = require('http'),
mongoose = require('mongoose');
// Bootstrap db connection
mongoose.connect(config.db)
// Bootstrap models
var models_path = __dirname + '/app/model';
fs.readdirSync(models_path).forEach(function(file) {
if (~file.indexOf('.js')) {
require(models_path + '/' + file);
}
});
var app = express();
// express settings
require('./config/express')(app, config);
// Bootstrap routes
require('./config/routes')(app, compact);
if (!module.parent) {
app.listen(app.get('port'), function() {
console.log('Server started on port ' + app.get('port'));
})
}
module.exports = app;
У меня есть папка с именем model
, которая содержит монгольские модели.
У меня есть папка test
с accountTest.js
- выглядит как это:
(Это, чтобы проверить мою модель счета)
var utils = require('./utils'),
should = require('chai').should(),
Account = require('../app/model/account');
describe('Account', function() {
var currentUser = null;
var account = null;
it('has created date set on save', function(done) {
var account = new Account();
account.save(function(err) {
account.created.should.not.be.null;
done();
});
});
утилиты взята отсюда: http://www.scotchmedia.com/tutorials/express/authentication/1/06
это работает , если я оставлю это только в одном тесте.
Если добавить еще один тест, чтобы проверить мой экспресс-маршрут, что-то вроде этого:
var request = require('supertest'),
app = require('../../app'),
should = require('chai').should();
describe('Account controller', function() {
it('GET /account returns view', function(done) {
//omitted for brevity
done();
});
});
Тогда я получаю ошибку тайм-аута, на моих тестах для моей модели ...
линии, что делает это app = require('../../app')
Если я удалю это, тогда нет таймаута.
Я понимаю, что это может быть связано с соединением мангуста, но не уверен, как «разделить» его между тестами?
Но я не хочу/нуждаюсь в/app.js в моих тестах модели Mongoose, или я? – Alex
Основная идея состоит в том, чтобы использовать оператор before, обернутый вокруг всех тестов, которые будут нуждаться в этой функции, чтобы избежать двойного вызова. Вы можете просто потребовать свои модели Mongoose, хотя, если у вас есть другие тесты, которые испытывают Express и Express, потребуются ваши модели, тогда вам может быть лучше, чем просто требовать Express. – dankohn
Wyy мне нужен app.js (экспресс), если я только хочу проверить свою модель, хотя ... это не имеет смысла? Конечно, должен быть лучший способ. – Alex