javascript - 使用 Supertest 运行 Mocha 测试时,Express 路由永远不会执行

标签 javascript node.js mocha.js

这是运行应用程序并直接使用 Postman 击中它时有效的路线:

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);
  }
});

这是一个测试:

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()
          });
      });
    });

在 Debug模式下运行,到达expect语句,总是出现错误。 route 的代码永远不会到达。

我的 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 的问题。重新安装和全新配置后,它工作正常。除此之外我真的没有任何解释。

关于javascript - 使用 Supertest 运行 Mocha 测试时,Express 路由永远不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31550373/

相关文章:

javascript - "Stop on Error"mochajs 选项

javascript - 为什么我的 next() 和 prev() 切换的文本输出不正确?

javascript - Gulp.js 在没有 browserSync 的情况下提供 src 文件?

node.js - Google App Engine 如何实现分析(堆栈跟踪)?

node.js - 将nodeJS部署到Heroku内部错误

javascript - 支持 es6 模块的正确设置是什么?

javascript - 使用预乘 Alpha 读出 FBO

javascript - 我如何在没有评论的情况下从 ACE 编辑器中获取值(value)?

javascript - Google 静态 map URL 长度限制

angularjs - 测试 Angular 范围的实例