Node.jsはかなり新しい
サーバープロセスを実行し、ファイルを提供する(エクスプレスやフレームワークを使用しない)アプリを作成しました。現在、単体テストを試みています。
そのためにモカテストを使用しようとしています...サーバープロセスを開始し、それに対してリクエストを実行して、期待される結果(統計コード、本文のコンテンツなど)をテストするつもりでした。
ただし、正しく機能しておらず、すべてのリクエストがサーバーに接続できません...ノードが1つのプロセスループを実行しているため、クエリの実行中にサーバーが「バックグラウンド」で実行されていないことが問題であると確信しています。または、要求が行われている間、サーバーがまだ実行されていない(ASYNCを開始している)可能性がありますか?
とにかく、これをテストする適切な方法は何であるか疑問に思っていました。サーバーをバックグラウンドで実行する必要があるか(フォークされたプロセスなど)、またはサーバープロセスを待機する方法を見つける必要があると思います。最初に「アップ」しますが、方法がわかりません。
または、少なくともそのようなサーバープロセスのテストに関する推奨事項(Mochaまたはその他を使用)。
ありがとう。
これがテストコードの例です(元の質問から更新されました)
var server = new Server302('./fixture/');
var instance;
describe('Tests', function() {
before(function(done) {
instance = http.createServer(function(request, response) {
console.log(request.url);
server.serve(request, response);
}).listen(8000);
instance.on("listening", function() {
console.log("started");
done();
});
});
after(function(done){
instance.close();
console.log("stopped");
done();
});
it("Should fetch test.html", function(done) {
console.log("test1");
http.get("http://localhost:8000/", function(res) {
res.on('data', function(body) {
console.log(body)
expect(body).toEqual("test");
done();
});
})
});
順番に実行されているように見えますが、接続エラーで失敗しますが、ブラウザで手動でテストすると機能します。
started
test1
․․․stopped
✖ 1 of 1 tests failed:
1) Tests Should fetch test.html:
Error: connect ECONNREFUSED
at errnoException (net.js:670:11)
at Object.afterConnect [as oncomplete] (net.js:661:19)