MongoDBを使用するnode.jsプログラムのテストを実行するスクリプトを設定しようとしています。アイデアは、私が実行できるスクリプトが欲しいということです。
- デーモンとしてフォークされたMongoDBプロセスを開始します
- データベースにいくつかのテストデータを事前に入力します
- ノードサーバーを永久に起動するので、デーモンとして実行されます
- テストを実行する
- データベースからテストデータを削除します
これらすべてのステップを実行する大まかなスクリプトがあります。私の問題は、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ドキュメントに何かが欠けていますか?