2012-05-18 2 views
2

Я использую mocha для написания модульных тестов для веб-приложения nodejs + mongodb. Существует много тестовых файлов, в которых нужно управлять mongodb.Как открыть соединение mongodb перед запуском всех тестов и закрыть его после всех проверок в мокко?

Таким образом, я хочу открыть соединение перед запуском всех тестов и закрыть его после всех тестов, но я не знаю, как это сделать.

В настоящее время я создаю файл dbtest_global.js, который имеет такой код:

before(function(done) { 
    console.log('before all'); 
    global.connection = openMongoDB(); 
    done(); 
}); 

after(function(done) { 
    global.connection.close(done); 
}); 

Тогда в других тестах, я использую require('./dbtest_global') требовать его.

Но я обнаружил, что при запуске mocha метод before будет вызываться многократно, что приводит к многократному изменению global.connection.

Интересно, есть ли способ, чтобы методы before и after вызывались только один раз при запуске mocha?

+0

Возможно, поведение изменилось с тех пор, как вы задали этот вопрос, но если это целое 'dbtest_global.js', то' before' должно выполняться только один раз. В основном то же самое, что и решение, приведенное здесь: http://stackoverflow.com/a/16321613/227578, и из быстрого теста, похоже, работает. – dule

ответ

0

Вы пытались использовать обычную глобальную переменную условия, которая гарантирует, что функция before сразу вернется, если переменная уже установлена?

0

Попробовать это MongoDB хелперы для мокко - https://github.com/arunoda/mocha-mongo

Это создает соединение с базой данных для вас и перед испытанием очистить коллекции.

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

  • Нет связанных вопросов^_^