我怎样才能在快递js手动触发路由处理程序?

假设我有一个简单的快速js应用程序,如下所示:

var express = require('express'); var app = express(); app.get('/', function(req, res) { return res.json({ hello: 'world' }); }); module.exports = app; 

我想能够去命令行,需要的应用程序,启动服务器和模拟请求。 像这样的东西:

 var app = require('./app'); app.listen(3000); app.dispatch('/') // => {hello:"world"} 

您可以使用run-middleware模块。 这是通过创build新的请求和响应对象,并使用这些对象来调用您的应用程序。

 app.runMiddleware('/yourNewRoutePath',{query:{param1:'value'}},function(responseCode,body,headers){ // Your code here }) 

更多信息:

  • Github & NPM中的模块页面;
  • 使用运行中间件模块的例子

披露:我是这个模块的维护者和第一个开发者。

据我所知,没有办法切换到一个特定的路线在内部,但有一种方法来标记请求,然后移动到下一个路线:

 app.use((req, res, next) => { if("nextRouteCondition"){ req.skip = true; return next(); } }) 

这可以让你完成你想做的事情。