2013-10-25 11 views
28

Mam kilka testów - mianowicie Supertest - które ładują moją aplikację Express. Ta aplikacja tworzy połączenie Mongoose. Chciałbym wiedzieć, jak sprawdzić status tego połączenia z poziomu mojego testu.Sprawdź stan połączenia mongoose bez tworzenia nowego połączenia

W app.js

mongoose.connect(...) 

W test.js

console.log(mongoose.connection.readyState); 

Jak uzyskać dostęp do app.js połączenie? Jeśli połączę się przy użyciu tych samych parametrów w pliku test.js, czy utworzą nowe połączenie lub poszukają istniejącego?

+1

są oba skrypty działające niezależnie od siebie lub jest test.js wymagane przez app.js? – Bernhard

+0

@Bernhard the test.js wymaga app.js - w app.js robię var app = exports.app = express() iw teście wymagam ("../ app.js"). App – cyberwombat

Odpowiedz

58

Ponieważ moduł mangusta eksportuje singleton obiekt, nie trzeba połączyć w swoim test.js, aby sprawdzić stan połączenia:

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

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

Wynik - 0 = odłączony, 1 = podłączony, 2 = podłączenie, 3 = odłączenie [(soucre)] (http://mongoosejs.com/docs/api.html#connection_Connection-readyState) Moje poświadczenia były nieprawidłowe, dało 4, którego nie mogę znaleźć w dokumentach urzędowych ani nigdzie indziej. –

+5

@AshwaniAgarwal check out [ten plik] (https://github.com/Automattic/mongoose/blob/4237515684bbab8401e579125f2a3b204765bd83/lib/connectionstate.js). – robertklep

+1

Najlepsze rozwiązania Sprawdziłem stan połączenia przy każdym żądaniu. Umieściłem go w oprogramowaniu pośredniczącym w celu propagowania błędów połączenia DB z klientem – Tdy

Powiązane problemy