Я пытаюсь настроить сценарий для выполнения тестов для моей программы node.js, которая использует MongoDB. Идея заключается в том, что я хочу, чтобы иметь сценарий, который я могу работать, что:Выполнение тестов node.js в тестовых данных в базе данных MongoDB
- Запускает процесс MongoDB, раздвоенный как демон
- Pre заполнит базу данных с некоторыми тестовыми данными
- Запуск моего сервера узла с навсегда , так что он работает как демон
- Выполнить мои тесты
- Отбросьте тестовые данные из базы данных
У меня есть сырой скрипт, который выполняет все Thes е шаги. Моя проблема в том, что MongoDB занимает определенное количество времени для настройки, что приводит к вызову sleep
в моем скрипте. Следовательно, он работает только время от времени.
# the directory of this script DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # launch mongodb. $DIR/../../db/mongod --fork --logpath ./logs/mongodb.log --logappend --dbpath ./testdb/ --quiet # takes a bit of time for the database to get set up, # and since we make it a daemon process we cant run the tests immediately sleep 1 # avoid EADDRINUSE errors because existing node servers are up. killall node &> /dev/null # start up our node server using a test database. forever start $DIR/../main.js --dbname=testdb --logpath=test/logs/testlog.log # takes a bit of time for node to get set up, # and since we make it a daemon process we cant run the tests immediately sleep 1 # run any database setup code (inject data for testing) $DIR/../../db/mongo 127.0.0.1:27017/testdb $DIR/setup.js --quiet # actually run the tests node $DIR/tests.js # kill the servers (this could be a little less heavy handed...) killall node &> /dev/null killall forever &> /dev/null # finally tear down the database (drop anything we've added to the test db) $DIR/../../db/mongo 127.0.0.1:27017/testdb $DIR/teardown.js --quiet # and then shut mogodb down kill -2 `ps ax | grep mongod | grep -v grep | awk '{print $1}'`
Что такое лучший способ пойти о том, что я пытаюсь сделать? Я иду сюда по кроличьей лунке, или я чего-то не замечаю в документах MongoDB?
Я ничего не знаю об узле или монго, но на других языках вы должны написать код, чтобы он не зависел от базы данных. – tzerb
Почему бы вам просто не спать дольше? что означает переменное время? – mindandmedia
Любая причина, по которой вы не можете просто держать mongodb все время? Вы уже работаете с тестовым db, поэтому я не думаю, что у вас будут конфликтующие процессы. –