私は誓いを使ってテストしているエクスプレスサーバーを持っています。Vowsテストスイート内からサーバーを実行したいので、テストスイートを機能させるためにバックグラウンドでサーバーを実行する必要はありません。その後、サーバーを実行してテストするケーキタスクを作成できます。隔離。
私はserver.coffee
(エクスプレス)サーバーを作成し、構成し、ルートを設定し、次のようにapp.listen(port)を呼び出しました。
# Express - setup
express = require 'express'
app = module.exports = express.createServer()
# Express - configure and set up routes
app.configure ->
app.set 'views', etc....
....
# Express - start
app.listen 3030
私の単純なroutes-test.js
ものでは:
vows = require('vows'),
assert = require('assert'),
server = require('../app/server/server');
// Create a Test Suite
vows.describe('routes').addBatch({
'GET /' : respondsWith(200),
'GET /401' : respondsWith(401),
'GET /403' : respondsWith(403),
'GET /404' : respondsWith(404),
'GET /500' : respondsWith(500),
'GET /501' : respondsWith(501)
}).export(module);
ここrespondsWith(code)
で、機能は誓いのドキュメントにあるものと似ています...
上記のテストでrequire
サーバーを実行すると、サーバーの実行が自動的に開始され、テストが実行されて合格します。これはすばらしいことですが、「正しい」方法で実行しているとは思えません。
サーバーの起動時期をあまり制御できません。デフォルトの環境ではなく「テスト」環境を指すようにサーバーを構成したい場合、またはテスト時にデフォルトのログレベルを変更したい場合はどうなりますか?
PS私は誓いをCoffeescriptに変換するつもりですが、今のところ、ドキュメントからの学習モードのimとして、すべてjsで!