这是运行应用程序并直接使用 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/