Javascript NodeJS测试-公开应用程序
我正在用supertest测试我的NodeJS应用程序。在我的app.js结束时,我公开了我的app,因此我可以在test.js中使用它Javascript NodeJS测试-公开应用程序,javascript,node.js,testing,Javascript,Node.js,Testing,我正在用supertest测试我的NodeJS应用程序。在我的app.js结束时,我公开了我的app,因此我可以在test.js中使用它 /////////////////// // https options var options = { key: fs.readFileSync("./private/keys/Server.key"), cert: fs.readFileSync("./private/certs/Server.crt"), ca: fs.readF
///////////////////
// https options
var options = {
key: fs.readFileSync("./private/keys/Server.key"),
cert: fs.readFileSync("./private/certs/Server.crt"),
ca: fs.readFileSync("./private/ca/CA.crt"),
requestCert: true,
rejectUnauthorized: false
};
///////////////////
// start https server
var server = https.createServer(options, app).listen(app.get("port"), function(){
console.log('Server listening on port ' + app.get('port'));
});
exports = module.exports = server;
当我在test.js中需要我的服务器时,选项的路径将导致错误,因为我的test.js位于目录./test/test.js中,而app.js位于./app.js中
我正在努力为这个问题找到一个干净的解决方案。如果您将您的选项放入一个模块中,您可以直接使用它,也可以在测试中使用类似或的方式将其存根
或者,您可以修改导出以接受选项作为参数,以便您需要它,例如,require('server')(config)将服务器代码包装在一个闭包中:function startServer(config){return https.createServer(options,app.listen)、app.get('port')、function(){console.log('server listening on port'+app.get('port');});}module.exports=startServer;