接続ミドルウェアの統合テストをいくつか作成し、モック リクエストではなくリアル http リクエストでテストしたいと考えています。
ミドルウェア スタックは、渡された構成に応じて異なる動作をするため、各テストの後に異なる構成で再起動できるサブプロセスとしてミドルウェア サーバーを実行したかったのです。
問題は、テスト サーバーが問題なく実行され (ether が直接またはテスト ファイル内で開始され)、ブラウザー経由でアクセスできることですが、接続が拒否されたため、http.get(..) 経由で応答が得られません。
Error: connect ECONNREFUSED
これが私のセットアップです...
//MOCHA TEST FILE: testServer.test.js
function runTestServer(configEnv) {
var cmd = "node " + path.resolve(__dirname, "runTestServer.js");
var testSrv = exec(cmd, { "env" : configEnv },
function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
});
return testSrv;
}
describe("onRequest", function(){
it("should return a response", function (done) {
this.timeout(100000);
var serverInstance = runTestServer({
"appDir" : path.resolve(__dirname, "../../handleHttp/app")
});
http.get({host:'localhost', port:9090, path:'/'}, function (res) {
//error thrown before this callback gets called
});
});
});
これは、サブプロセスとして実行される testServer.js ファイルの内容です。
//Test-Process-File: runTestServer.js
var connect = require("connect"),
handleHttp = require("...")
var server = connect();
handleHttp.init(server); //this methods applies the middleware
console.log("TEST-SERVER listening on 9090");
server.listen(9090);