快速路线永远不会执行与Supertest运行摩卡testing

这是一个运行应用程序,并直接用邮递员打电话的路线:

router.get("/profile", function(req, res) { var schema = schemas.filter(function(e) { return e.route === "profile"; }).pop(); if (schema !== undefined) { var schemaJson = require(schema.schemaFile); return res.status(200).send(schemaJson); } }); 

这是一个testing:

 var schemas = require("../../conf/schemas"), api_key = require("../../conf/api-keys").pop().key, app = require("../../app"), request = require("supertest"); describe("CDM API Get Schema Operations", function() { it("Returns 404 for schema that do not exist", function (done) { request(app) .get("/schemas/profile") .end(function(err, res) { expect(res.statusCode).to.equal(500); //expect(res.body.thing).to.not.equal(null); done() }); }); }); 

在debugging模式下运行,expect语句达到了,总是出错。 路线中的代码永远不会到达。

我的app.js文件不会导出应用程序对象(这是一个Express对象)。

 var express = require('express'), logger = require('morgan'), body_parser = require('body-parser'); var cdm_gateway = require('./middleware/cdm-gateway'), v1_gateway = require('./middleware/v1-gateway'), schema_routes = require('./routes/schema'), member_routes = require('./routes/member'); var app = express(); app.use(cdm_gateway); app.use("/v1", v1_gateway); app.use(logger('dev')); app.use(body_parser.json()); app.use(body_parser.urlencoded({ extended: false })); app.use('/v1/schemas', schema_routes); app.use('/v1/member', member_routes); // Error handling app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); if (app.get('env') === 'development') { app.use(function(err, req, res, next) { res.status(err.status || 500) .send('error', { message: err.message, error: err }); }); } app.use(function(err, req, res, next) { res.status(err.status || 500) .send('error', { message: err.message, error: {} }); }); app.server = app.listen(3030); module.exports = app; 

该错误通常包含不受支持的状态码方法。

这原来是WebStorm的一个问题。 重新安装和新鲜的configuration后,它工作正常。 除此之外,我没有真正的解释。

试试这个,改变你的路线和中间件:

     router.get(“/ profile”,函数(req,res, next ){
       var schema = schemas.filter(function(e){return e.route ===“profile”;})。pop();

       if(schema!== undefined){
         var schemaJson = require(schema.schemaFile);
        返回res.status(200).send(schemaJson);
       } else { 
          var error = new Error('Not Found'); 
          error.status = 404; 
          下(误差); 
        }
     });
     app.use(function(err,req,res,next){
      水库
         .status(err.status || 500)
         。发送({ 
            消息:err.message, 
            错误:{} 
          });
     });