我想为我的连接中间件编写一些集成测试,并使用 real-http-requests 而不是模拟请求对其进行测试。
中间件堆栈的行为取决于传递的配置,这就是为什么我想将中间件服务器作为子进程运行,我可以在每次测试后使用不同的配置重新启动。
问题是测试服务器运行没有问题(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);