2013-10-25 1 views
28

У меня есть некоторые тесты - а именно Supertest - которые загружают мое приложение Express. Это приложение создает соединение Mongoose. Я хотел бы знать, как проверить статус этого соединения из моего теста.Проверить состояние соединения мангуста без создания нового подключения

В app.js

mongoose.connect(...) 

В test.js

console.log(mongoose.connection.readyState); 

Как получить доступ к app.js соединение? Если я подключу, используя те же параметры в test.js, это создаст новое соединение или будет искать существующий?

+1

оба являются скрипты, работающие независимо друг от друга, или является test.js требуется app.js? – Bernhard

+0

@Bernhard test.js требует app.js - в app.js Я делаю var app = exports.app = express() и в тесте, который мне нужен («../ app.js»). App – cyberwombat

ответ

58

Поскольку модуль мангуст экспортирует одноплодной объект, вы не должны подключить в вашем test.js, чтобы проверить состояние соединения:

// test.js 
require('./app.js'); // which executes 'mongoose.connect()' 

var mongoose = require('mongoose'); 
console.log(mongoose.connection.readyState); 
+29

Выход - 0 = отключен, 1 = подключен, 2 = соединение, 3 = отсоединение [(soucre)] (http://mongoosejs.com/docs/api.html#connection_Connection-readyState) Мои учетные данные были недействительными, это давало 4, которого я не могу найти в официальных документах или где-либо еще. –

+5

@AshwaniAgarwal проверить [этот файл] (https://github.com/Automattic/mongoose/blob/4237515684bbab8401e579125f2a3b204765bd83/lib/connectionstate.js). – robertklep

+1

Лучшие решения, которые я нашел для проверки состояния соединения по каждому запросу. Я поместил его в промежуточное программное обеспечение для распространения ошибок соединения с БД клиенту – Tdy

Смежные вопросы